Невозможно передать переменную команде bash в python - PullRequest
2 голосов
/ 16 мая 2019

Я пытаюсь передать переменную python команде bash, например:

subscriptionId = "xxxxx"
command = " az account show -s $subscriptionId"
subprocess.check_output(command)

Я получаю следующую ошибку:

error : az account show: error: argument --subscription/-s: expected one argument

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Назначение переменной Python, такой как subscriptionId = "xxxxx", магическим образом не помещает ее в вашу среду, тем более передает ее подпроцессу. Вы должны сделать эту интерполяцию самостоятельно:

command = f"az account show -s {subscriptionId}"

Если вы действительно хотите использовать переменные окружения, добавьте нужную переменную и включите расширение оболочки:

subscriptionId = ...
env = os.environ.copy()
env['subscriptionId'] = subscriptionId
command = "az account show -s ${subscriptionId}"
subprocess.check_output(command, env=env, shell=True)

В качестве альтернативы, вы можете связываться с собственной средой процесса:

subscriptionId = ...
os.environ['subscriptionId'] = subscriptionId
command = "az account show -s ${subscriptionId}"
subprocess.check_output(command, shell=True)

Эти опции, на мой взгляд, не рекомендуются, поскольку они поднимают все проблемы безопасности, которые shell=True приносит с собой, но не дают вам реального преимущества.

0 голосов
/ 16 мая 2019

, поскольку переменная команда - это просто строка, вы можете просто сделать это.


subscriptionId = "xxxxx"
command = " az account show -s " + subscriptionId
subprocess.check_output(command)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...