Назначение переменной 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
приносит с собой, но не дают вам реального преимущества.