Советы по Bash/ShellScript
Заметки из очень полезной ссылки https://zwischenzugs.com/2018/01/06/ten-things-i-wish-id-known-about-bash/
Предпочитайте $() вместо ``
Если вы хотите зафиксировать возврат команды в переменной, лучше использовать $() вместо ``
$ echo `echo \`echo \\\`echo inside\\\`\`` $ echo $(echo $(echo $(echo inside))) # more elegant and readable
Используйте [[ вместо [ в операторах if
Поддерживает дружественные && || ‹ › и не ограничивается -a -o и т. д.
Лучшая обработка пустых мест в $variable, без кавычек if [[ -f $file ]]
Поддерживает сопоставление шаблонов регулярных выражений if [[ $answer =~ ^y(es)?$ ]] instead of if [ "$answer" = y -o "$answer" = yes ]
Узнайте больше о том, почему [[ лучше, чем [ : здесь и здесь
‹() Когда команда ожидает Файл в качестве параметра
Если вы хотите передать вывод команды другой команде, которая ожидает файлы в качестве входных данных, использование ‹() позволит избежать сохранения в промежуточных файлах. например
diff <(grep somestring file1) <(grep somestring file2)
!$ Чтобы получить параметры предыдущих команд
Чтобы повторить последний параметр предыдущей команды в текущей команде, например
grep somestring /long/path/to/some/file/or/other.txt vi !$ !:1-$ ==> to repeat all the parameters of previous command
Запуск оболочки и последовательность загрузки точечных файлов
Это всегда меня смущало, ниже очень полезная диаграмма последовательности запуска здесь
getopts для чтения аргументов сценариев оболочки
Чтобы прочитать параметры для этого скрипта: script.sh -v -n name
while getopts “h?v:n” opt do case “${opt}” in h|\?) show_help exit 0 ;; v) VERBOSE=1 ;; n) NAME=${OPTARG} ;; esac done