我已经尝试解决这个问题有一段时间了,但没有成功。情况的核心是我使用一个bash脚本向python脚本发送参数:
例如:
foo.sh调用bar.py……调用看起来像: bar.py $var1 $var2 ... $varn
然后Python脚本使用sys.argv数组打印所有参数。当在命令行中正确运行Python脚本时,但是当从bash脚本(i.e foo.sh)调用时,则无任何输出。
此外,我使用“#!/bin/bash -x”选项启动了foo.sh,并观察了输出。
总结一下:
- 两个脚本,foo.sh和bar.py
- foo.sh 调用bar.py,并将foo.sh的变量作为参数传递给bar.py
- bar.py使用sys.argv打印它看到的参数
- bar.py在自己的终端中运行时可以工作,但从foo.sh调用时无法工作
任何帮助都会很棒!
谢谢!
编辑:大家好,感谢回复,完整代码非常长...但是...两个脚本的内容可以总结如下
foo.sh ____
#!/bin/bash
declare -a list1;
declare -a list2;
list1=("foo" "bar" "please");
list2=("foo" "bar" "please" "help");
declare -a joined;
joined=( $(bar.py "${list1[@]}" "${list2[@]}" ) );
bar.py ____
#!/bin/python
import sys
for arg in sys.argv:
print arg
我假设Python中所有的缩进都是正确的(还不确定StackOverflow是如何做到这一点的:))。这两个问题是我遇到的核心问题。正如所述,当没有从foo.sh调用时,bar.py会正确打印参数。
PS:我确实想说“crust”