Специальные переменные bash


###Специальные переменные###

$0 - Имя выполняемого сценария (или, в интерактивном режиме, — самой оболочки)

$# - Количество позиционных параметров, переданных сценарию

$- - Список флагов, переданных сценарию

$_ - Последний аргумент предыдущей из выполнявшихся команд

$? - Код завершения последней выполненной команды (напоминаю, что значение 0 говорит об успешном завершении, другое — об ошибочном)

$$ - Номер текущего процесса (PID)

$! - Номер (PID) последнег1о асинхронного процесса (команды, выполненнойв фоновом режиме)

$* - Все позиционные параметры, слитые в одну строку: «$*» эквивалентно «$1х$2х...$п» , где х — первый символ значения переменной IFS (internal field separator), по умолчанию — пробел

$@ - Все позиционные параметры, подлежащие дальнейшему разбору: $@ эквивалентно *$1 $2 ...$п

Аргументы, следующие за $9, должны заключаться в фигурные скобки, например: ${10}, ${11}, ${12}.

###Подстановка тильды###

~ - заменяется на имя домашнего каталога пользователя, запустившего сценарий;

~ + - заменяется на путь к текущему каталогу;

- заменяется на путь к предыдущему каталогу.

###Раскрытие скобок###

*строка1 { строка2 , строка3 ...} строкаN *заменяется на: строка1строка2строкаЫ строка1строкаЗстрокаЫ ...

Пробелов внутри скобок быть не должно. Эта функция полезна, когда нужно применить одну команду к нескольким файлам, не подходящим под общий шаблон:

$ cat /home/den/linuxbook/{intro,param,subst} > glava8

###Подстановка арифметических выражений###

**$( (выражение) ) или $ [выражение] ** - эквивалентные формы записи. Внутри выражения выполняются подстановки параметров.

Приоритет арифметических операций — обычный, подробнее см. man bash, секция ARITHMETIC EVALUATION.

###Свойства переменных###
Имя_переменной = значение - присваивается
Имя_переменной + значение - присваивается если оно установлено
Имя_переменной :? значение - ошибка если переменная не установлена
Имя_переменной ? значение - ошибка если переменная не установлена
Имя_переменной ? значение - присваивается если переменная не установлена
readonly Имя_переменной ** - сделать переменную только для чтения
+= "плюс-равно"** - увеличивает значение переменной на заданное число
let "var += 5" - значение переменной var будет увеличено на 5
-= "минус-равно" - уменьшение значения переменной на заданное число
** = "умножить-равно"* - умножить значение переменной на заданное число, результат записать в переменную
/= "слэш-равно" - уменьшение значения переменной в заданное число раз
%= "процент-равно" - найти остаток от деления значения переменной на заданное число, результат записать в переменную

###Условная подстановка параметров