Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从一个shell传递到另一个shell以执行python脚本_Python_Linux_Bash_Shell - Fatal编程技术网

将变量从一个shell传递到另一个shell以执行python脚本

将变量从一个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脚本,它接受一个参数并返回一个乘法。我有一个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):

    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在哪一行获得
索引器?