Искусство программирования на языке сценариев командной оболочки




Программирование на языке сценариев командной оболочки - стр. 273


then echo "$1 -- не является каталогом." return $BADDIR fi

rm -f "$1"/* return 0 # Успешное завершение функции. }

cleanup_pfiles $projectdir

exit 0

Не забывайте начинать ваш сценарий с sha-bang -- #!/bin/bash.

Заменяйте повторяющиеся значения константами. Это сделает ваш сценарий более простым для понимания и позволит вносить изменения, не опасаясь за его работоспособность.

if [ -f /var/log/messages ] then ... fi # Представьте себе, что через пару лет # вы захотите изменить /var/log/messages на /var/log/syslog. # Тогда вам придется отыскать все строки, # содержащие /var/log/messages, и заменить их на /var/log/syslog. # И проверить несколько раз -- не пропустили ли что-нибудь.

# Использование "констант" дает лучший способ: LOGFILE=/var/log/messages # Если и придется изменить, то только в этой строке. if [ -f "$LOGFILE" ] then ... fi

В качестве имен переменных и функций выбирайте осмысленные названия.

fl=`ls -al $dirname` # Не очень удачное имя переменной. file_listing=`ls -al $dirname` # Уже лучше.

MAXVAL=10 # Пишите имена констант в верхнем регистре. while [ "$index" -le "$MAXVAL" ] ...

E_NOTFOUND=75 # Имена кодов ошибок -- в верхнем регистре, # к тому же, их желательно дополнять префиксом "E_". if [ ! -e "$filename" ] then echo "Файл $filename не найден." exit $E_NOTFOUND fi

MAIL_DIRECTORY=/var/spool/mail/bozo # Имена переменных окружения # так же желательно записывать символами # в верхнем регистре. export MAIL_DIRECTORY

GetAnswer () # Смешивание символов верхнего и нижнего решистров # удобно использовать для имен функций. { prompt=$1 echo -n $prompt read answer return $answer }

GetAnswer "Ваше любимое число? " favorite_number=$? echo $favorite_number

_uservariable=23 # Допустимо, но не рекомендуется. # Желательно, чтобы пользовательские переменные не начинались с символа подчеркивания. # Так обычно начинаются системные переменные.

Используйте смысловые имена для кодов завершения.




Содержание  Назад  Вперед