Приложение B. Справочная информация | Популярный Linux

Опубликовано Bash в Ср, 23/12/2009 — 21:08


В нижеследующем справочнике представлена информация, касающаяся отдельных моментов написания сценариев на языке командной оболочки 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` Команда исполняется в подоболочке,
результат записывается в переменную

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.