Skip to main content

Bash скрипты

При запуске скрипта создается дочерняя консоль, в ней выполняется скрипт и результат возвращается в консоль.

Можно запускать через source, имя (если . в PATH), ./... , и ./ ... & С фоновой задачей аккуратно с объемом вывода, ^C не работает.

Функции


function functname
{
shell commands
}

functname ( )
{
shell commands
}

Используют позиционные переменные. 

functname "one" $7

Если внутри функции нужна локальная переменная, то local var1="something", иначе используется глобальная переменная.

Программы для работы с функциями

declare -f список функций с описанием

-F только имена функций
unset fname удалить функцию из памяти
type fname Описание функции

-t выведет тип

 

Приоритет при вызове из консоли

  1. Aliases
  2. Служебные слова типа if, ...
  3. Функции
  4. Встроенные команды типа cd, type, ...
  5. Скрипты и исполняемые команды

Переменные

Описывается $varname или ${varname} Например есть переменная UID. Для вывода 0_ нужно использовать echo ${varname}_

$1, $2, ... Позиционные параметры
$* Строка, содержащая все параметры через пробел
$@ Равна N строкам-параметрам. Актуально при передаче в функции.
$# Количество аргументов

Определение глобальной переменной: var1="something"

Обработка переменных

${varname:-word } Если переменная не существует или существует но пустая - вернет word
${varname:=word} Если переменная не существует или существует но пустая - присвоит ей word и вернет word
${varname:?message} Если переменная не существует или существует но пустая - выведет сообщение и завершит скрипт
${varname:+word} Если переменная существует или пустая - вернет word, иначе null
${varname:offset:length}

Срез. 

count=frogfootman

${count:4} вернет footman

${count:4:4} вернет foot