передать / все / аргументы из Python в Bash скрипт - PullRequest
0 голосов
/ 05 октября 2018

это для KODI, мне нужно запустить скрипт bash с помощью systemd-run от python или я получу черный экран.и пока интерфейс не открывает

, у меня есть это, которое может передать один аргумент скрипту 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, который ему нравится.

1 Ответ

0 голосов
/ 05 октября 2018

Как правило, вы не комбинируете аргумент списка с 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:] будет пустым, а список жестко закодированных аргументов останется неизменным без необходимости явного условного выражения.

...