从Python脚本传递变量到Bash脚本

-1 投票
1 回答
1898 浏览
提问于 2025-04-18 16:04

我现在正在尝试把一个参数从我的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 这个选项不太推荐使用。

撰写回答