В данной статье рассмотрены основные команды и конструкции в работе командного интерпретатора Bash.
Переменная | Значение |
---|---|
$DIRSTACK |
Содержимое вершины стека каталогов. |
$EDITOR |
Текстовый редактор по-умолчанию. |
$EUID |
Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя. |
$UID |
Содержит реальный идентификатор, который устанавливается только при логине. |
$FUNCNAME |
Имя текущей функции в скрипте. |
$GROUPS |
Массив групп к которым принадлежит текущий пользователь. |
$HOME |
Домашний каталог пользователя. |
$HOSTNAME |
hostname машины. |
$HOSTTYPE |
Архитектура машины. |
$LC_CTYPE |
Внутренняя переменная, которая определяет кодировку символов. |
$OLDPWD |
Прежний рабочий каталог. |
$OSTYPE |
Тип ОС. |
$PATH |
Путь поиска программ. |
$PPID |
Идентификатор родительского процесса. |
$SECONDS |
Время работы скрипта (в сек.) |
$# |
Общее количество параметров переданных скрипту |
$* |
Все аргументы переданыне скрипту(выводятся в строку). |
$@ |
Тоже самое, что и предыдущий, но параметры выводятся в столбик. |
$! |
PID последнего запущенного в фоне процесса. |
$$ |
PID самого скрипта. |
$? |
Содержит код завершения последней команды. |
Цикл for выполняет перебор аргументов и работу с ними переданных после in
в тело цикла.
Общая конструкция:
for in [список]
do
команды
done
Пример:
#!/bin/bash
for planet in Меркурий Венера Земля Марс Юпитер Сатурн Уран Нептун Плутон
do
echo $planet
done
echo
exit 0
Оператор while проверяет условие перед началом каждой итерации и если условие истинно (если код возврата равен 0), то управление передается в тело цикла. В отличие от циклов for, циклы while используются в тех случаях, когда количество итераций заранее не известно.
Общая конструкция:
while [условие истинно]
do
<команды>
done
Пример:
#!/bin/bash
var0=0
LIMIT=10
while [ "$var0" -lt "$LIMIT" ]
do
echo -n "$var0 "
var0=`expr $var0 + 1`
done
echo
exit 0
Оператор цикла until проверяет условие в начале каждой итерации, но в отличие от while итерация возможна только в том случае, если условие ложно.
Общая конструкция:
until [условие ложно]
do
<команды>
done
Пример:
#!/bin/bash
until [ "$var1" = end ]
do
echo "Введите значение переменной #1 "
echo "(end - выход)"
read var1
echo "значение переменной #1 = $var1"
done
exit 0
Выражение | Значение | Пример |
---|---|---|
-eq |
Равно (equal) | if [ "$a" -eq "$b" ] |
-ne |
Не равно (not equal) | if [ "$a" -ne "$b" ] |
-gt |
Больше (greater than) | if [ "$a" -gt "$b" ] |
-ge |
Больше или равно (greater or equal) | if [ "$a" -ge "$b" ] |
-lt |
Меньше (less then) | if [ "$a" -lt "$b" ] |
-le |
Меньше или равно (less or equal) | if [ "$a" -le "$b" ] |
< |
Меньше (внутри двойных круглых скобок) | (("$a" < "$b")) |
<= |
Меньше или равно (внутри двойных круглых скобок) | (("$a" <= "$b")) |
> |
Больше (внутри двойных круглых скобок) | (("$a" > "$b")) |
>= |
Больше или равно (внутри двойных круглых скобок) | (("$a" >= "$b")) |
Выражение | Значение | Пример |
---|---|---|
= |
Равно | if [ "$a" = "$b" ] |
== |
Равно. Синоним оператора = |
if [ "$a" == "$b" ] |
!= |
Не равно. Этот оператор используется при поиске по шаблону внутри [[ ... ]] |
if [ "$a" != "$b" ] |
< |
Меньше, в смысле величины ASCII-кодов. | if [[ "$a" < "$b" ]] if [ "$a" \< "$b" ] Обратите внимание, что символ < необходимо экранировать внутри [ ] |
> |
Больше, в смысле величины ASCII-кодов. | if [[ "$a" > "$b" ]] if [ "$a" \> "$b" ] Обратите внимание, что символ > необходимо экранировать внутри [ ] |
-z |
Строка “пустая”, т.е. имеет нулевую длину. | - |
-n |
Строка не “пустая”. Оператор -n требует, чтобы строка была заключена в кавычки внутри квадратных скобок. Как правило, проверка строк, не заключенных в кавычки, оператором ! -z , или просто указание строки без кавычек внутри квадратных скобок проходит нормально, однако это небезопасная, с точки зрения отказоустойчивости, практика. Всегда заключайте проверяемую строку в кавычки. |
- |