【发布时间】:2011-04-26 17:10:20
【问题描述】:
我一直在尝试解决这个问题一段时间,但没有成功。情况的核心是我正在使用 bash 脚本将参数发送到 python 脚本:
例子:
foo.sh 调用 bar.py....调用看起来像:bar.py $var1 $var2 ... $varn
python 脚本然后使用 sys.argv 数组打印所有参数。 python 脚本从命令行正常工作,但是当使用 bash 脚本(即 foo.sh)调用时,我没有从 bar.py 得到输出。
另外,我使用“#!/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 是如何做到这一点的 :))。这两个代表了我遇到的问题的核心。如前所述,当 bar.py 不是从 foo.sh 调用时,它会正确打印参数。
PS:我的意思是说“地壳”
【问题讨论】:
-
请贴出实际的 bash 脚本,这样更容易看出哪里出错了
-
那你做错了什么。发布出现问题的最少代码。
-
从 bash 脚本调用时,python 脚本可以打印任何内容吗?例如。如果您在
foo.py的顶部添加print "wtf",您在运行bash 脚本时是否看到该输出? -
另外:我认为你的意思是这种情况的“症结”哈哈
-
@tobyodavies 和 Ignacio,我发布了内容
标签: python bash parameters arguments