Bash скрипты
· 5 мин. чтения
Используем плагины и инструменты
- Shell Script - IntelliJ IDEs Plugin | Marketplace
- https://explainshell.com/ - вставляем непонятную команду с параметрами, получаем справку по ней и заданным параметрам
🔥 Обязательные требования
Указываем командную оболочку для выполнения скриптов: Bash
#!/usr/bin/env bash
Разные оболочки по-разному выполняют команды.
Режим прекращения выполнения в случае ошибки любой команды
set -eo pipefail
Используем $SELF_DIR для относительных путей
SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
RELATIVE_PATH=${RELATIVE_PATH:-"$SELF_DIR/relative/path"}
Задаём переменным значения по-умолчанию
CI_BUILD_NUMBER=${CI_BUILD_NUMBER:-0}
Даём возможность задавать значения параметров снаружи
# ❌ Плохо: нельзя передать другое значение снаружи
XCODE_APP_NAME="application"
# ✅ Хорошо: можно задать любое значение переменной снаружи
XCODE_APP_NAME=${XCODE_APP_NAME:-"application"}
Делим скрипт на логические части при помощи функций
task_foo () {
# Script of task foo
}
task_boo () {
# Script of task boo
}
task_foo
# task_boo - временно отключено
🟢 Хорошие практики и шаблоны
Ветвление по имени команды в первом аргументе
task_foo () {
echo "exec: task_foo"
}
task_boo () {
echo "exec: task_boo first arg: $1"
echo "exec: task_boo all task args: $\*"
}
"$@"
./script.sh task_boo --one --two
exec: task_boo first arg: --one
exec: task_boo all task args: --one --two