wilful — Не знаю как назвать, пусть будет shell
тут и тут местные жители делились своим опытом по написанию скриптов, которые должны били бы упростить жизнь страждущим странникам, но как бы не так. Эти скрипты не предназначены для распространения, поскольку они специализированы для их владельца, они не представляют из себя функциональной ценности, т.к. содержат в себе исключительно последовательности команд (во втором случае выполняемых по дефолту от рута!), выполнение которых совершенно не отслеживается и в любой момент может произойти всё, что угодно:
и т.д. и т.п....
Язык или почти язык, я уж точно не знаю, но знаю, что он предоставляет вполне достаточно средств для обработки "защиты от дурака", в кратком изложении предоставлю некоторые из них:
Конечно, это далеко не все возможности скриптинга (отсылаю в wmii, в котором весь конфиг написан на нем), я лишь хочу чтобы прежде, чем выложить всяческие штуки, прокрутите в голове, что возможно этим кто-то воспользуется...
- не хватило прав на создание папки - дальше непредсказуемые последствия выполнения оставшейся части команд?
- а если файл существует уже с именем указанным для папки?
- вдруг очепятка в пароле?
и т.д. и т.п....
Язык или почти язык, я уж точно не знаю, но знаю, что он предоставляет вполне достаточно средств для обработки "защиты от дурака", в кратком изложении предоставлю некоторые из них:
- be root?
if [ "$LOGNAME" != "root" ]; then
Можно использовать как наличия, так и для отсутствия прав.
- Is it works?
if [ $? = "0" ]; then
Ну а как же, проверять удачно ли завершилась предыдущая операция очень важно
- Is it you?!
if [ -f $DIR_NAME ]; then
А вдруг не папка, вдруг есть или нету, проверка на файл - отличная возможность избежать апокалипсиса (подсказка: тоже есть и для других типов, в том числе и папок)
- You are assured?
1
2
3echo -n "Папка не существует, создать? \"$DIR_NAME\" [y/n]: "
read ANS
if [ "$ANS" = "y" ] || [ "$ANS" = "Y" ]; then
Возможно в некоторых ситуациях излишне, но для торопливых никто не запрещает сделать параметр по дефолту (см. ниже)
- Is there something?
1
2
3if [ -z $2 ]; then
VAR="var"
Так можно обработать и отказ, при условии не достаточного кол-ва параметров, например
- Last?
1
2exit 0
Есть некоторые рамки приличия, т.е. ваш скриптможетдолжен быть интерактивным, например выдавая на выходе 0 при хорошей погоде или же "не 0" при плохом настроении
Конечно, это далеко не все возможности скриптинга (отсылаю в wmii, в котором весь конфиг написан на нем), я лишь хочу чтобы прежде, чем выложить всяческие штуки, прокрутите в голове, что возможно этим кто-то воспользуется...