Несколько приёмов для bash
Запуск python в зависимости от платформы
Требуется под linux запускать python как python3,
а под windows как python
В скрипте можно сделать так:
if [[ "$OSTYPE" == "linux"* ]]; then PY=python3 else PY=python fi
В дальнейшем коде запускать $PY вместо python.
Возврат кода ошибки
Чтобы вернуть код ошибки из одного и того же скрипта может быть два варианта:
- скрипт запустили прямо из bash
- скрипт вызвали из другого скрипта
Если скрипт запустили прямо из bash, то надо использовать exit,
а если из другого скрипта, то с высокой долей вероятности требуется return.
Можно это делать автоматически:
### define $ret command as 'exit' if run standalone or ### define $ret command as 'return' if called from another script [[ "$0" == "$BASH_SOURCE" ]] && ret=exit || ret=return
Потом это можно использовать примерно так:
mysupercommand || $ret $? или $ret 1
Присвоить значение переменной если такой переменной ещё нет
[ -z "${OUTDIR}" ] && OUTDIR=__output
ну или полноценное условие если переменной не существует
if [[ -z "${USE_VAR}" ]]; then echo "### No USE_VAR defined" else echo "### USE_VAR = ${USE_VAR}" ...... fi
Дополнение строковой переменной новой строкой
MYVAR= MYVAR+=$'\n' MYVAR+="string number 1" MYVAR+=$'\n' MYVAR+="string number 2" echo "${MYVAR}"