Специальные переменные 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
-= "минус-равно" - уменьшение значения переменной на заданное число
** = "умножить-равно"* - умножить значение переменной на заданное число, результат записать в переменную
/= "слэш-равно" - уменьшение значения переменной в заданное число раз
%= "процент-равно" - найти остаток от деления значения переменной на заданное число, результат записать в переменную
###Условная подстановка параметров
- ${параметр:-строка} - Значение по умолчанию. Если параметр имеет непустое значение, то подставляется оно, иначе — указанная строка
- ${параметр:=строка} - Присваивание значения по умолчанию. Если параметр не имеет непустого значения, то ему присваивается «строка», после чего
значение подставляется. Конструкция допустима только для переменных оболочки - ${параметр:?сообщение} - Ошибка, если пусто. Если параметр не имеет непустого значения, то выводится указанное сообщение. Сообщение можно опустить,
тогда будет выведено стандартное сообщение - ${параметр:+строка} - Дополнительное значение. Если параметр имеет непустое значение, подставляется «строка», иначе — пустая строка
- ${параметр#шаблон} - Подставляется значение параметра, в котором из головной части удален наименьший фрагмент, удовлетворяющий шаблону
- ${параметр##шаблон} - Подставляется значение параметра, в котором из головной части удален наибольший фрагмент, удовлетворяющий шаблону
- ${параметр%шаблон} - Подставляется значение параметра, в котором из хвостовой части удален наименьший фрагмент, удовлетворяющий шаблону
- ${параметр%%шаблон} - Подставляется значение параметра, в котором из хвостовой части удален наибольший фрагмент, удовлетворяющий шаблону
- ${#параметр} - Если параметр есть * или @, подставляется количество позиционных параметров, иначе — длина значения параметра в байтах