如有一个 result.txt 文件
python3 test.py --name=$name
test.py 文件
import argparse
class Config:
parser = argparse.ArgumentParser()
parser.add_argument("--name")
args = parser.parse_args()
name = args.name
print("name is %s" % name)
if __name__ == '__main__':
config = Config()
我在 终端执行命令,
name="hello world"
cmd=$(cat result.txt)
echo $cmd
$cmd
结果如下, 就是 name 这个变量没有传递进去脚本里面,请问一下应该如何改才能将这个 name 变量传递进去呀
python3 test.py --name=$name
name is $name
1
thedrwu 2021-11-01 17:07:54 +08:00 via Android
eval
|
2
liangqing 2021-11-01 17:16:16 +08:00
直接把 result.txt 当脚本用
```bash sh result.txt ``` |
3
18870715400 OP @liangqing , 好的, 谢谢大佬
|
4
AoEiuV020 2021-11-01 17:21:14 +08:00
第一反应是 envsubst ,但你这里感觉问题不只一个,
cat 再$cmd 为什么不直接 sh result.txt 这种只要 export name 就能传进去了, name 变量内容带空格的话后续所有使用都要用好双引号,否则一个变量会被当成两个参数, |
5
jhsea3do 2021-11-01 17:22:15 +08:00
|
6
18870715400 OP @AoEiuV020 嗯, 是我想复杂了, 直接 sh 对应的脚本就行了, 还有, 我试了一下, 无论加不加单引号或者双引号 name 变量的值都是穿不进去的
|
7
superrichman 2021-11-01 17:31:13 +08:00
|
8
superrichman 2021-11-01 17:35:43 +08:00
|
9
ruanimal 2021-11-01 17:45:35 +08:00
把类换成函数就好了,不懂就别瞎用。。。
|
11
canwushuang 2021-11-20 10:16:19 +08:00
指令用了 python 的解释器,但是又用了 shell 的代码 $name 是不是有些问题?
|