zaLinux.ru

Как запустить небольшой код Python в Bash


Bash — это не только и даже не столько встроенные функции оболочки сколько программы (утилиты) командной строки. Запуская эти команды и передавая полученные данные конвейеру (по трубе) можно автоматизировать самые различные вещи, на программирование которых в других языках программирования может понадобиться очень много усилий.

Эта заметка расскажет, как запустить код Python в Bash, а также как в скрипте Bash запустить выполнение программы на Python

Как выполнить код Python в Bash

В командной строке Bash для выполнения кода используйте конструкцию вида:

python -c "КОД"

Например:

python -c "print (\"It works\")"

Ещё один вариант, который может пригодиться в более экзотических обстоятельствах:

bash -c 'python -c "print (\"КОД\")"'

Например:

bash -c 'python -c "print (\"It works\")"'

Как в скрипте Bash запустить программу на Python

Для выполнения программы Python в скрипте Bash используйте команду вида:

python СКРИПТ.py АРГУМЕНТ1 АРГУМЕНТ2 АРГУМЕНТ3

Пример запуска скрипта extractor.py с передачей ему двух аргументов: значение переменной $line и 8080:


python extractor.py $line 8080

Как в скрипте Bash запустить программу на Python и присвоить её вывод переменной

Если вам нужно запустить скрипт Python, а затем вывод программы присвоить переменной Bash, то используйте конструкцию вида:

ПЕРЕМЕННАЯ=`python СКРИПТ.py АРГУМЕНТ1 АРГУМЕНТ2 АРГУМЕНТ3`

Пример:

response=`python extractor.py $line 8080 2>/dev/null | sed -E "s/\/\/.+:/\/\/$line:/"`

Как в скрипт Bash встроить код Python

Если код Python невозможно использовать в одной строке и вы не хотите использовать для вызова внешний скрипт, тогда вам подойдёт следующая конструкция:

#!/bin/bash

script=`cat <<_EOF_
КОД
_EOF_`

echo "$script" | python

Там где КОД вставьте код Python.

Данный пример является рабочим:

#!/bin/bash

value="I will be in the script!"

script=`cat <<_EOF_
print ("It works")
print ("Line 2")
print ("Line 3: $value")
_EOF_`

echo "$script" | python

Ещё один вариант этой конструкции:

python << END
... КОД ...
END

И ещё один вариант, в котором вывод присваивается в качестве значения переменной ABC:

ABC=$(python << END ... END)

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *