从Python脚本传递变量到Bash脚本
我现在正在尝试把一个参数从我的Python脚本传递到我创建的bash脚本。请问我该如何将用户输入从Python脚本传递到bash脚本呢?
这是我的Python脚本 'passingParameters.py' 的代码,我用它来尝试把一个变量(loop)发送到我的bash脚本。我已经测试过这个Python脚本(在调整了代码之后),通过把输出发送到另一个Python脚本来读取输入。
loop = str(sys.argv[1])
subprocess.check_call( ["./test.sh", loop], shell=True)
这是我的bash脚本 'test.sh' 的代码。我单独测试过这个脚本,确认当我从命令行直接调用这个bash脚本时,它确实能接收到用户输入。
echo "This number was sent from the passParameters.py script: " $1
1 个回答
4
subprocess.check_call( ["./test.sh %s" % loop], shell=True)
如果你使用 shell=True
,那么执行的程序是 /bin/sh
,它会调用 test.sh 这个脚本,但不会看到 loop
这个变量。你可以选择把 shell=False
,并在脚本的开头加上 #!/bin/sh
,
#! /bin/sh
echo "This number was sent from the passParameters.py script: " $1
或者把变量作为字符串传递:
subprocess.check_call( ["./test.sh", loop], shell=False)
其实 shell=True
这个选项不太推荐使用。