python - 将 /all/ 参数从 python 传递到 bash 脚本
问题描述
这是针对 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 语句的情况下发生,我喜欢它。
解决方案
通常,您不会将列表参数与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:]
则为空,并且硬编码参数列表保持不变,不需要显式条件。
推荐阅读
- c++ - 使用 std::move 在开头插入向量的中间元素不起作用
- javascript - 如何用公司图标替换页面加载器
- php - 无论如何在控制器中检索随机url参数
- postgresql - 如何在批处理中使用 AWS/RDS 切换数据库并避免停机?
- android - 滚动期间仅隐藏 AppBar 中的底部视图
- javascript - 如何在 React Js 中的 map 函数中使用 Bootstrap Modal 来渲染单个元素?
- javascript - Performance.now() 在不同平台上的执行时间
- r - 离散选择模型的非线性效用函数?r中的mlogit可以做到吗?
- c# - 在 JetBrains PyCharm 上使用 IronPython
- azure - 是否可以在线查看和管理 Azure 空间锚点?