询问大佬们一个 shell 脚本的问题

2021-11-01 17:05:31 +08:00
 18870715400

如有一个 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
2218 次点击
所在节点    Python
11 条回复
thedrwu
2021-11-01 17:07:54 +08:00
eval
liangqing
2021-11-01 17:16:16 +08:00
直接把 result.txt 当脚本用
```bash
sh result.txt
```
18870715400
2021-11-01 17:21:05 +08:00
@liangqing , 好的, 谢谢大佬
AoEiuV020
2021-11-01 17:21:14 +08:00
第一反应是 envsubst ,但你这里感觉问题不只一个,
cat 再$cmd 为什么不直接 sh result.txt 这种只要 export name 就能传进去了,
name 变量内容带空格的话后续所有使用都要用好双引号,否则一个变量会被当成两个参数,
jhsea3do
2021-11-01 17:22:15 +08:00
main.sh

#!/bin/sh
python3 test.py "$@"



sh main.sh --name=123

这样满足你要球吗
18870715400
2021-11-01 17:27:35 +08:00
@AoEiuV020 嗯, 是我想复杂了, 直接 sh 对应的脚本就行了, 还有, 我试了一下, 无论加不加单引号或者双引号 name 变量的值都是穿不进去的
superrichman
2021-11-01 17:31:13 +08:00
引号

name="hello world"
python3 test.py --name="$name"
superrichman
2021-11-01 17:35:43 +08:00
ruanimal
2021-11-01 17:45:35 +08:00
把类换成函数就好了,不懂就别瞎用。。。
ruanimal
2021-11-01 17:47:22 +08:00
@ruanimal 看错了,丢人。。
canwushuang
2021-11-20 10:16:19 +08:00
指令用了 python 的解释器,但是又用了 shell 的代码 $name 是不是有些问题?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/812195

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX