Заметки о Bash

В данной статье рассмотрены основные команды и конструкции в работе командного интерпретатора Bash.


Зарезервированные переменные Bash

Переменная Значение
$DIRSTACK Содержимое вершины стека каталогов.
$EDITOR Текстовый редактор по-умолчанию.
$EUID Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя.
$UID Содержит реальный идентификатор, который устанавливается только при логине.
$FUNCNAME Имя текущей функции в скрипте.
$GROUPS Массив групп к которым принадлежит текущий пользователь.
$HOME Домашний каталог пользователя.
$HOSTNAME hostname машины.
$HOSTTYPE Архитектура машины.
$LC_CTYPE Внутренняя переменная, которая определяет кодировку символов.
$OLDPWD Прежний рабочий каталог.
$OSTYPE Тип ОС.
$PATH Путь поиска программ.
$PPID Идентификатор родительского процесса.
$SECONDS Время работы скрипта (в сек.)
$# Общее количество параметров переданных скрипту
$* Все аргументы переданыне скрипту(выводятся в строку).
$@ Тоже самое, что и предыдущий, но параметры выводятся в столбик.
$! PID последнего запущенного в фоне процесса.
$$ PID самого скрипта.
$? Содержит код завершения последней команды.

Циклы

Цикл for

Цикл for выполняет перебор аргументов и работу с ними переданных после in в тело цикла. Общая конструкция:

for in [список]
do
  команды
done

Пример:

#!/bin/bash
for planet in Меркурий Венера Земля Марс Юпитер Сатурн Уран Нептун Плутон
do
  echo $planet
done
echo
exit 0

Цикл while

Оператор 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

Оператор цикла 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, или просто указание строки без кавычек внутри квадратных скобок проходит нормально, однако это небезопасная, с точки зрения отказоустойчивости, практика. Всегда заключайте проверяемую строку в кавычки. -

Использование pipefile в bash скриптах

Использование кавычек в bash

Сведения о статье:
Дата публикации: 30/08/2020 12:25AM
Последнее обновление: 11/10/2020 4:41PM (rmntrvn)
Поделиться статьей: 
Автор: rmntrvn
Постоянная ссылка: http://kb.rmntrvn.ru/kb/note-about-bash
bash |