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 выведет тип |
Приоритет при вызове из консоли
- Aliases
- Служебные слова типа if, ...
- Функции
- Встроенные команды типа cd, type, ...
- Скрипты и исполняемые команды
Переменные
Описывается $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 |