В нижеследующем справочнике представлена информация, касающаяся отдельных моментов написания сценариев на языке командной оболочки Bash.
Таблица B-1. Переменные специального назначения
Переменная | Описание |
---|---|
$0 | Имя файла сценария |
$1 | Позиционный параметр #1 (аргумент сценария или функции) |
$2 - $9 | Позиционные параметры #2 - #9 |
${10} | Позиционный параметр #10 |
$# | Количество позиционных параметров |
"$*" | Все позиционные параметры (как одно слово) * |
"$@" | Все позиционные параметры (в виде отдельных строк) |
${#*} | Количество позиционных параметров, переданых из командной строки |
${#@} | Количество позиционных параметров, переданых из командной строки |
$? | Возвращаемое значение |
$$ | Идентификатор процесса -- Process ID (PID) сценария |
$- | Флаги, переданные сценарию (командой set) |
$_ | Последний аргумент предыдущей команды |
$! | Идентификатор последнего фонового процесса (PID) |
*Необходимо заключать в кавычки, в противном случае будет работать как "$@".
Таблица B-2. Операции проверки: Двухместные операции
Оператор | Значение | ----- | Оператор | Значение |
---|---|---|---|---|
Арифметическое сравнение | Сравнение строк | |||
-eq | Равно | = | Равно | |
== | Равно | |||
-ne | Не равно | != | Не равно | |
-lt | Меньше | \< | Меньше (в кодах ASCII) * | |
-le | Меньше или равно | |||
-gt | Больше | \> | Больше (в кодах ASCII) * | |
-ge | Больше или равно | |||
-z | Пустая строка | |||
-n | Не пустая строка | |||
Арифметическое сравнение | В двойных круглых скобках (( ... )) | |||
> | Больше | |||
>= | Больше или равно | |||
< | Меньше | |||
<= | Меньше или равно |
*При использовании двойных квадратных скобок [[ ... ]] , необходимо использовать экранирующий символ \ .
Таблица B-3. Операции проверки: Файлы
Оператор | Что проверяется | ----- | Оператор | Что проверяется |
---|---|---|---|---|
-e | Файл существует | -s | Файл не нулевой длины | |
-f | Обычный файл | |||
-d | Файл является каталогом | -r | Файл доступен для чтения | |
-h | Файл является символической ссылкой | -w | Файл доступен для записи | |
-L | Файл является символической ссылкой | -x | Файл доступен для исполнения | |
-b | Файл блочного устройства | |||
-c | Файл символного устройства | -g | Установлен флаг sgid | |
-p | Файл является каналом (pipe) | -u | Установлен флаг suid | |
-S | Файл является сокетом (socket) | -k | Установлен бит "sticky" | |
-t | Файл связан с терминальным устройством | |||
-N | Файл был модифицирован с момента последнего чтения | F1 -nt F2 | Файл F1 более новый, чем F2 * | |
-O | Вы являетесь владельцем файла | F1 -ot F2 | Файл F1 более старый, чем F2 * | |
-G | Вы принадлежите к той же группе, что и файл | F1 -ef F2 | Файлы F1 и F2 являются жесткими ссылками на один и тот же файл * | |
! | "NOT" (логическое отрицание (инверсия) результатов всех вышеприведенных проверок) |
*Двухместный оператор (требует наличия двух операндов).
Таблица B-4. Подстановка параметров и экспансия
Выражение | Описание |
---|---|
${var} | Значение переменной var, то же, что и $var |
${var-DEFAULT} | Если переменная var не инициализирована, то результатом вычисления выражения является $DEFAULT * |
${var:-DEFAULT} | Если переменная var не инициализирована или пуста, то результатом вычисления выражения является $DEFAULT * |
${var=DEFAULT} | Если переменная var не инициализирована, то результатом вычисления выражения является $DEFAULT * |
${var:=DEFAULT} | Если переменная var не инициализирована, то результатом вычисления выражения является $DEFAULT * |
${var+OTHER} | Если переменная var инициализирована, то результатом вычисления выражения является $OTHER, иначе -- пустая строка |
${var:+OTHER} | Если переменная var инициализированаset, то результатом вычисления выражения является $OTHER, иначе -- пустая строка |
${var?ERR_MSG} | Если переменная var не инициализирована, то выводится $ERR_MSG * |
${var:?ERR_MSG} | Если переменная var не инициализирована, то выводится $ERR_MSG * |
${!varprefix*} | Соответствует всем ранее объявленным переменным, чьи имена начинаются с varprefix |
${!varprefix@} | Соответствует всем ранее объявленным переменным, чьи имена начинаются с varprefix |
* Само собой разумеется, если переменная varинициализирована, то результатом выражения будет $var.
Таблица B-5. Операции со строками
Выражение | Описание |
---|---|
${#string} | Длина строки $string |
${string:position} | Извлечение подстроки из строки $string, начиная с позиции $position |
${string:position:length} | Извлечение $length символов из строки $string, начиная с позиции $position |
${string#substring} | Поиск кратчайшего совпадения по шаблону $substring, в строке $string, поиск ведется с начала строки |
${string##substring} | Поиск самого длинного совпадения по шаблону $substring, в строке $string, поиск ведется с начала строки |
${string%substring} | Поиск кратчайшего совпадения по шаблону $substring, в строке $string, поиск ведется с конца строки |
${string%%substring} | Поиск самого длинного совпадения по шаблону $substring, в строке $string, поиск ведется с конца строки |
${string/substring/replacement} | Замена первой, найденой по шаблону $substring, подстроки на подстроку $replacement |
${string//substring/replacement} | Замена всех, найденых по шаблону $substring, подстрок на подстроку $replacement |
${string/#substring/replacement} | Если в строке $string найдено соответствие шаблону $substring и найденая подстрока начинает строку $string, то она заменяется подстрокой $replacement |
Если в строке $string найдено соответствие шаблону $substring и найденая подстрока заканчивает строку $string, то она заменяется подстрокой $replacement | |
expr match "$string" '$substring' | Количество совпадений с шаблоном $substring* в строке $string, поиск начинается с начала строки |
expr "$string" : '$substring' | Количество совпадений с шаблоном $substring* в строке $string, поиск начинается с начала строки |
expr index "$string" $substring | Позиция (номер символа), первого найденого совпадения с шаблоном $substring, в строке $string |
expr substr $string $position $length | Извлечение $length символов из строки $string, начиная с позиции $position |
expr match "$string" '\($substring\)' | Извлечение подстроки с начала строки $string, совпадающей с шаблоном $substring* |
expr "$string" : '\($substring\)' | Извлечение подстроки с начала строки $string, совпадающей с шаблоном $substring* |
expr match "$string" '.*\($substring\)' | Извлечение подстроки с конца строки $string, совпадающей с шаблоном $substring* |
expr "$string" : '.*\($substring\)' | Извлечение подстроки с конца строки $string, совпадающей с шаблоном $substring* |
* Где $substring -- регулярное выражение.
Таблица B-6. Прочие конструкции
Выражение | Описание |
---|---|
Квадратные скобки | |
if [ CONDITION ] | Проверка условия |
if [[ CONDITION ]] | Расширеный синтаксис операции проверки условия |
Array[1]=element1 | Инициализация массива |
[a-z] | Диапазон символов в регулярных выражениях |
Фигурные скобки | |
${variable} | Подстановка параметра |
${!variable} | Косвенная ссылка на переменную |
{ command1; command2 } | Блок кода |
{string1,string2,string3,...} | Подстановка |
Круглые скобки | |
( command1; command2 ) | Группа команд, исполняемая в подоболочке (subshell) |
Array=(element1 element2 element3) | Инициализация массива |
result=$(COMMAND) | Команда исполняется в подоболочке, результат записывается в переменную |
>(COMMAND) | Подстановка процесса |
<(COMMAND) | Подстановка процесса |
Двойные круглые скобки | |
(( var = 78 )) | Целочисленная арифметика |
var=$(( 20 + 5 )) | Арифметическое выражение, результат записывается в переменную |
Кавычки | |
"$variable" | "Мягкие", или "нестрогие" кавычки |
'string' | "Строгие", или "полные" кавычки |
Обратные кавычки | |
result=`COMMAND` | Команда исполняется в подоболочке, результат записывается в переменную |