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)
Связанные статьи:
- Как преобразовать строку в нижний регистр в Bash (82.4%)
- Как преобразовать строку в верхний регистр в Bash (82.4%)
- Как создавать диалоговые блоки в интерактивных shell скриптах (67.6%)
- Как в Bash реализовать «Нажмите любую кнопку для продолжения» (67.6%)
- Как в Bash проверить, содержит ли строка подстроку (67.6%)
- Вышел PHP 8: обзор изменений языка (RANDOM - 17.6%)