scripting
Обработка сигналов в sh
Сигналы – один из способов взаимодействия между процессами. Отправив определенный сигнал, можно приостановить или возобновить работы приложения, завершить его или сделать с ним еще что-нибудь. Сигнал определяется номером, которому соответствие имя. Посмотрите man signal или наберите kill -l чтобы получить список сигналов.
В скриптах обработка сигналов может быть крайне полезна.
› Continue reading
sed tips and tricks
Sed – прекрасное средство редактирования текста с отвратительной документацией. В скриптах он часто бывает незаменим, но чтобы выполнить что-то непривычное приходится долго искать интернете нужный пример или долго экспериментировать с разными вариантами. Очень неудобно!
Так что сделаю сделаю себе памятку!
› Continue reading
значение по умолчанию для переменной shell
Иногда нужно выставить значение по умолчанию для переменной, которую может указать/не указать пользователь в качестве аргумента при запуске. Для этого можно использовать вот такую конструкцию:
VALUE='' VALUE_DEFAULT='default' if [ -z $VALUE ]; then VALUE="$VALUE_DEFAULT" fi echo $VALUE
Из явных плюсов – ее читабельность, как всегда в ущерб краткости. Пробуем написать тоже самое, но короче:
VALUE='1' VALUE_DEFAULT='default' [ -z $VALUE ] && VALUE="$VALUE_DEFAULT" echo $VALUE
Получилось, но теперь понять конструкцию чуть сложнее. Пробуем сделать еще более короткий вариант:
VALUE=''
VALUE_DEFAULT='default'
VALUE=${VALUE:-$VALUE_DEFAULT}
echo $VALUE
Самый короткий вариант, но понятный только тем, кто внимательно прочитал man sh.
Вывод сообщения в stderr из shell скрипта
Очень полезная вещь – перенаправление потоков вывода. С ее помощью в shell скриптах можно сделать многое, в том числе и вывод сообщений в stderr. Пример простого скрипта ниже:
#/bin/sh
DEBUG=0
print_debug()
{
if [ "x$DEBUG" != "x0" ]; then
echo $* >&2
fi
}
print_debug hello world
Переменная DEBUG, если не равно 0, указывает, что нужно выводить сообщения в функции print_debug. Обычное echo выводи строку со всеми аргументами функции (переменная $*) в stdout, которые перенаправляется в stderr ( >&2 ).
Правильный и красивый способ добавлять модули ядра в автозагрузку в CentOS 5.X
Наткнулся на блог с красивым и правильным методом добавления модулей в автозагрузку centos 5.x.
› Continue reading
jot и seq или как упростить себе работы с циклами
jot (FreeBSD)
seq (Linux)
две простые утилиты для работы с последовательностями, прекрасная альтернатива замены for в shell скриптах.
› Continue reading