从python传递/ all / args到bash脚本

时间:2018-10-05 18:12:32

标签: python bash parameter-passing command-line-arguments

这是针对KODI的,我需要使用python中的systemd-run运行bash脚本,否则会出现黑屏。并且前端无法打开

到目前为止,我拥有一个可以将一个参数传递给bash脚本的参数(如果有一个或多个参数),如果没有参数则不传递参数。后者是我需要帮助的部分。

#!/usr/bin/python
import subprocess, sys


if len(sys.argv) > 1:
        arg=str(sys.argv[1])
        print ("arg is %s" % arg)
        subprocess.call(["systemd-run /usr/bin/emulator-frontend.sh %s" % str(sys.argv[1])], shell=True)
else:

        subprocess.call(["systemd-run /usr/bin/emulator-frontend.sh"], shell=True)

在没有if语句id的情况下发生这种情况的情况下,请尽量使用一个脚本调用另一个脚本,以尽量保持优雅。

1 个答案:

答案 0 :(得分:0)

通常,您不会将列表参数与shell=True组合在一起。要么使用

subprocess.call("systemd-run /usr/bin/emulator-frontend.sh", shell=True)

subprocess.call(["systemd-run", "/usr/bin/emulator-frontend.sh"])

如果您想将Python脚本的参数直接传递给子进程,只需串联列表即可:

subprocess.call(["systemd-run", "/usr/bin/emulator-frontend.sh"] + sys.argv[1:])

请注意,如果没有参数,则sys.argv[1:]为空,并且硬编码参数列表将保持不变,而无需显式条件。