Это встроенные команды bash. Вы должны прочитать справочную страницу bash или, для getopts, попробовать help getopts
По одному (очень неудобно печатать на ipad и, следовательно, переключаться на ноутбук):
local
позволяет вам определять локальные переменные (в рамках функции)
getopts
- это встроенная утилита bash, которая реализует обработку аргументов в стиле getopt (аргументы типа -a
, -b
...)
case
- это форма bash для оператора switch. Синтаксис
case: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
shift
сдвигает все аргументы на 1 (так что второй аргумент становится первым, третий становится вторым, ...) аналогично perl shift. Если вы укажете аргумент, он сместится на столько индексов (поэтому shift 2
назначит $3 -> $1, $4 -> $2, ...
)
$#
- количество аргументов, переданных функции
${2:-*}
- форма аргумента по умолчанию. По сути, он смотрит на второй аргумент ($2
- это второй аргумент) и, если он не назначен, он заменит его на *
.
2>&-
- перенаправление вывода (в данном случае для стандартной ошибки)