Основы BASH

Зачем?

С одной стороны нужно быть очень осторожно с BASH – язык весьма своеобразный и легко сделать что-то без обработки ошибок, нечитаемое и неподдерживаемое.

При этом он очень эффективен во многих сценариях.

У меня внутреннее правило – если это можно уложить в несколько экранов, и особо сложный функционал не используется, то можно оставаться на BASH. Если нет, то нужно использовать что-то другое. Например, Python.

Заголовок файла

Примерно все мои скрипты начинаются так:

#!/usr/bin/env bash
#
# Some script description.
#
set -eEuo pipefail
cd "$(dirname "$0")"
set -x

Объясню построчно:

  1. Объясняет ядру, что нужно запустить приложение env, а уже оно в пути найдет приложение bash. Это полезно для случаев, когда в системе установлено несколько интерпретаторов bash.
  2. Далее краткое описание скрипта.
  3. set -eEuo pipefail говорит, что нужно падать при ошибках, а иначе они игнорируются (что вряд ли хорошая идея)
  4. cd "$(dirname "$0")" – переходит в текущую папку скрипта (довольно часто нужно, чтобы была определенная текущая папка, которая зависит от положения скрипта, а не какая-то случайная)
  5. set -x говорит печатать текст команды перед исполнением – фактически создает лог исполнения, что удобно

Что-то еще?

Я одно время хотел сделать весьма большое описание как на BASH обрабатывать разные типы файлов (json,yaml,csv) и т.п., но это наверняка нарушит главный принцип – использовать BASH по минимуму.

Так что, если еще что-то будет нужно, то легко найти в сети, а если много вещей нужно, то так лучше не делать.