Зачем?
С одной стороны нужно быть очень осторожно с BASH – язык весьма своеобразный и легко сделать что-то без обработки ошибок, нечитаемое и неподдерживаемое.
При этом он очень эффективен во многих сценариях.
У меня внутреннее правило – если это можно уложить в несколько экранов, и особо сложный функционал не используется, то можно оставаться на BASH. Если нет, то нужно использовать что-то другое. Например, Python.
Заголовок файла
Примерно все мои скрипты начинаются так:
#!/usr/bin/env bash
#
# Some script description.
#
set -eEuo pipefail
cd "$(dirname "$0")"
set -x
Объясню построчно:
- Объясняет ядру, что нужно запустить приложение
env
, а уже оно в пути найдет приложениеbash
. Это полезно для случаев, когда в системе установлено несколько интерпретаторовbash
. - Далее краткое описание скрипта.
set -eEuo pipefail
говорит, что нужно падать при ошибках, а иначе они игнорируются (что вряд ли хорошая идея)cd "$(dirname "$0")"
– переходит в текущую папку скрипта (довольно часто нужно, чтобы была определенная текущая папка, которая зависит от положения скрипта, а не какая-то случайная)set -x
говорит печатать текст команды перед исполнением – фактически создает лог исполнения, что удобно
Что-то еще?
Я одно время хотел сделать весьма большое описание как на BASH обрабатывать разные типы файлов (json,yaml,csv) и т.п., но это наверняка нарушит главный принцип – использовать BASH по минимуму.
Так что, если еще что-то будет нужно, то легко найти в сети, а если много вещей нужно, то так лучше не делать.