Практическое написание сценариев командной оболочки Bash/Код-сниппеты: различия между версиями

* Обращайте внимание на подстановочные операции. Если в целевой оболочке какие-то из них не поддерживаются, то их следует заменять эквивалентными. Эквивалентности можно добиться разными утилитами. Обычно нужно попробовать отыскать подходящую среди следующих: <code>awk</code> и <code>sed</code> (потоковые редакторы); <code>let</code>, <code>expr</code>, <code>bc</code> (регулярные выражения и вычисления); <code>grep</code>, <code>egrep</code> и <code>pgrep</code> (регулярные выражения); <code>tr</code> (преобразование символов); <code>cut</code> (выделение подстрок); <code>find</code> (поиск файлов) и др.
* Обращайте внимание на опции встроенных команд. Не все опции, которые есть у встроенных команд в Bash, описаны в POSIX. От таких опций нужно отказываться и искать альтернативные решения в переносимых сценариях.
* Кроме того, синтаксис самих внутренних команд может немного отличаться из-за встроенных возможностей Bash. Например: <source lang=bash>trap -- - SIGINT # В Bash допустимо</source>но по POSIX это не работает, нужно так<source lang=bash>trap - SIGINT # POSIX-совместимый вариант</source>
* Обращайте внимание на встроенные переменные. Множество переменных поддерживается только в Bash: <code>BASHPID</code>, <code>BASH_SOURCE</code>, <code>BASH_VERSION</code> и др.
 
1241

правка