| На сегодняшний день существует большое количество различных языков программирования, начиная от простых, Perl и заканчивая не простыми :) Kylix и C. Каждый язык имеет свои достоинства и недостатки. Возьмем, например, командный интерпретатор в UNIX Bourn Shell (он полностью совместим с интерпретатором BASH в Linux), основным его преимуществом является то, что он интегрирован непосредственно в консоль (шелл) *nix систем, то есть умея работать с консолью и имея знания шелл кодинга вы можете писать сценарии (скрипты). Важным недостатком (по моему) является то, что в шелл кодинге вы не сможете так издеваться над кодом программы как например в Перле. Я постараюсь описать основные аспекты шелл программирования, в Linux-e (в UNIX-e он имеет некоторые отличия, но не очень большие), то есть я рассчитываю на то, что читатель данного материала имеет уже какие-то знания в этой области. 1. Начнем с азов :), а именно с переменных. При обработки переменных, хранящих строки, их желательно заключать в кавычки. Например: if [ "$USER" == "root" ]; then действия fi Если вы считаете, что не имеет значения какие кавычки использовать, то вы ошибаетесь. Текст в двойных кавычках "" проверяется на содержание различного рода метасимволов ( ,c, и т.д.), а текст заключенный в одинарных кавычках обрабатывается как есть, то есть без учета выше приведенных символов. Например: echo -e "ehhhh ehhhh" - выведет 2 строки содержащие слово "ehhhh". echo -e 'ehhhh ehhhh' - выведет как есть, ehhhh ehhhh, без учета перехода на новую строку. 2. При составлении больших сценариев, нужно позаботиться о их отладки, чтобы быстро найти и ликвидировать ошибку в коде, если такая имеется. Данной операцией занимается команда "set опции_вызова". Она имеет следующие опции: -v -- отображение всех строк сценария при его выполнении -x -- отображение всех команд и их аргументов, при выполнении сценария Вам нужно в начале сценария поместить команду set и установить для нее опции, а в конце снять их. Снимаются опции так "set +опция_без_-" - конечно чуть не удобно. Если сценарий выполнился без каких либо ошибок - данные строки (с set командой) можно удалить. 3. Если ваш сценарий будет производить запись в какие-либо файлы вы должны обязательно проверять права доступа на них (так например на вашей машине они могут быть открыты, а на другой закрыты, что приведет к ошибке и некорректного выполнения сценария). Для этого используйте конструкцию: if [ -w имя_файла ]; then производится запись else ошибка … fi 4. Каждый сценарий должен, иметь понятные сообщения об ошибках! А именно, каждое сообщение должно содержать следующее: имя сценария в котором произошла ошибка : описание самой ошибки Можно этого не делать :) BASH сам будет выводить сообщения об ошибках, но они не всегда понятны пользователю, поэтому лучше сообщения об ошибках, которые посылает BASH, перенаправлять (2>) в системную корзину (/dev/null) и делать для них свои описания. Для указания имя сценария в котором произошла ошибка, можно использовать конструкцию "basename $0" или просто значение переменной "$0". Если вы создаете большой сценарий не забывайте делать файл - журнал ошибок, который будет содержать описание ошибок и дату их появления. 5. После выполнения в сценариях каких либо очень важных команд, не забывайте просматривать содержимое переменной "$?". Если она содержит 0, то команда выполнилась без ошибок, если 1 - то были ошибки. 6. В BASH-e есть такая команда, которая возвращает всегда значение true, данная команда носит название null (:), то есть если вы хотите чтобы при каком-то определенном условии не чего не выполнялось, воспользуйтесь ею. Пример: if [ -t ]; then echo "Сценарий выполняется в приоритетном режиме" else : fi 7. Все наверно знают и уже пользовались оператором "while", но не многие знают, что с помощью него можно считывать поочередно строки из файла для последующей их обработки: while read line; do Echo $line done /dev/null` # считываем нажатие 1-ой клавиши, ошибки отправляем в системную корзину stty -cbreak echo $_key stty $_SAVESTTY # восстанавливаем настройки терминала } Пока вроде все, но есть и другие сказки про пяточка и кролика …:). Удачи!
|