将变量从一个shell传递到另一个shell以执行python脚本
我有一个python脚本,它接受一个参数并返回一个乘法。我有一个shell脚本pythoncall.sh:将变量从一个shell传递到另一个shell以执行python脚本,python,linux,bash,shell,Python,Linux,Bash,Shell,我有一个python脚本,它接受一个参数并返回一个乘法。我有一个shell脚本pythoncall.sh: python/user/mult.py var1 我想在循环中为不同的参数值运行它:second.sh for i in 1 2 3 do var1=$i ./pythoncall.sh done 但是我没有得到结果,因为我没有传递我认为的变量。我的错误是索引器错误:列表索引超出范围 python脚本: import sys def main(argv): num
python/user/mult.py var1
我想在循环中为不同的参数值运行它:second.sh
for i in 1 2 3
do
var1=$i
./pythoncall.sh
done
但是我没有得到结果,因为我没有传递我认为的变量。我的错误是索引器错误:列表索引超出范围
python脚本:
import sys
def main(argv):
num1=sys.argv[1]
len1=int(num1)*3
print(len1)
if __name__ == '__main__':
main(sys.argv)
因此,直接的答案是您需要输入变量,以便第二个shell脚本能够看到它:
export var1=$i
但是为什么需要变量和第二个shell脚本呢?为什么不直接调用python脚本:
for i in 1 2 3
do
python /user/mult.py $i
done
我尝试了export,但仍然无法运行它,ValueError:int()的文本无效,基数为10:'var1'。我必须这样做。啊,您正在将文本字符串
“var1”
传递给Python。将第二个shell脚本更改为python/user/mult.py$var1
(带有$
符号)我添加了它,但遇到了问题:索引器:列表索引超出范围。print(sys.argv)
的输出是什么?['/user/mult.py',var']var是i的数字give@sebis:您的程序pythoncall.sh
始终使用固定字符串var1
作为参数调用mult.py
。在Python程序中,您试图将其转换为int
,但这当然失败。@user1934428请参阅我的答案上的注释-这不是导致索引器的原因。
@sebis在哪一行获得索引器?