вызвать команду оболочки из python - PullRequest
0 голосов
/ 09 июля 2020

У меня есть эта команда оболочки, которую я хочу вызвать из python

frontend='test'
instance_list = subprocess.call(['sudo gcloud compute instances list | grep -v TERMINA | grep +'frontend'+ | awk '{ print $1 }''])

Я получаю эту ошибку

    instance_list = subprocess.call(['sudo gcloud compute instances list | grep -v TERMINA | grep +'frontend'+ | awk '{ print $1 }''])
                                                                                                           ^
SyntaxError: invalid syntax

Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 09 июля 2020

Как насчет этого:

frontend='test'
instance_list = subprocess.call(['sudo gcloud compute instances list | grep -v TERMINA | grep '+frontend+' | awk \'{ print $1 }\''])

Вы только что ошиблись с конкатенацией строк: плюс должен быть вне кавычек ... А кавычки для awk, вероятно, нужно экранировать ...

0 голосов
/ 09 июля 2020

Думаю, проблема в том, как вы расположили цитаты и знак конкатенации (+)

Конкатенация работает как: 'Hello' + variable + 'world'

Или когда речь идет об экранировании кавычек внутри (Что вероятно, не ваш случай) Вы можете использовать тройные кавычки, например xxx.call([''' You are free to use single quotes inside here ''']);

В вашем случае это может помочь:

instance_list = subprocess.call(['sudo gcloud compute instances list | grep -v TERMINA | grep ' + frontend + ' | awk '{ print $1 }''])
0 голосов
/ 09 июля 2020

Вы должны ставить знаки плюса вне кавычек:

instance_list = subprocess.call(['sudo gcloud compute instances list | grep -v TERMINA | grep '+frontend+' | awk '{ print $1 }''])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...