Как написать простейший скрипт на bash

Элементарно, Ватсон! Даже моя кошка с этим справится. Что это может дать? А вот нужно вам, допустим, несколько раз проделать однотипную, рутинную работу и что... да, многие юные пользователи будут копировать/запускать программы/удалять ручками. Но ведь у любого набора однотипых действий есть алгоритм, который можно просто записать и сделать исполняемым скриптом, а всё остальное он сделает за вас.
Что нужно знать для создания самого простого скрипта? Команды, которые вы будете ему отдавать. В примере ниже рассмотрим скрипт автообновления gentoo linux, но будьте аккуратны --- скрипт не предназначен для повседневного использования, а приводится лишь для объяснения, он не охватывает все возможные варианты "выхлопа" emerge, а посему не рекомендуется к использованию.
Далее сам скрипт.

~update.sh~


#!/bin/bash
emerge --sync &&
x=`emerge -pvuND world | grep python` & echo "please, wait"
emerge -uND world &&
emerge -av --depclean > ~/depclean.txt
emerge --depclean
if [ $x != 0 ];
then
    revdep-rebuild && python-updater
else
    revdep-rebuild
fi
echo -n "update config? "
read u
if [ $u == "y" ] || [ $u == "yes" ];
then
    etc-update
else
    echo "Bye!"
fi


Теперь разберём, что же всё это значит.

emerge --sync - синхронизируемся с деревом portage

&& - двойной амперсанд указывает на то, что следующая команда не будет выполнена, если предыдущая завершилась неудачно. Применительно к нашему скрипту это означает, что если синхронизация по каким-то причинам не произошла, следующая команда не будет выполнена.

& - одинарный амперсанд - интерпретатор не дожидается завершения команды, выполнение программы происходит в фоновом режиме

без амперсанда - все команды выполняются последовательно, одна за другой

x=`emerge -pvuND world...` - просмотреть пакеты, которые являются претендентами на обновление и ежели среди них есть python (иначе говоря, если переменная не пуста), то выполнить revdep-rebuild && python-updater. В противном случае просто revdep-rebuild.

emerge -uND world && - обновление мира. В случае успешного обновления (без жёстких блокировок) записать пакеты-претенденты на удаление в файл depclean.txt на случай, если что-то пойдёт не так и нужно будет взглянуть обновление какого пакета могло вызвать проблему.

emerge --depclean - удалить ставшие не нужными пакеты

echo -n "update config? " - предложить обновить файлы конфигурации. При нажатии "y" или вводе "yes" запустить команду etc-update.

Теперь сделаем скрипт исполняемым:
$ cmod +x update.sh

Можно запускать. Это всего лишь пример. Подобным образом вы можете делать куда более полезные скрипты.
Ну и чтобы не разочаровывать более искушённого читателя, которому мало такой простой операции как представленная выше, выкладывается небольшая книжеца, где всё прекрасно описано.

ПРОГРАММИРОВАНИЕ НА Shell UNIX.pdf




0 коммент.: (+add yours?)

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.