如有一个 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 是不是有些问题? |