25.06.2012 15:19, dimas пишет:
> а в чем, собственно, проблема? верно сказали выше, правильно так, как удобно.
В этом я с вами не соглашусь.
Удобно бывает по-разному.
Но часто эти "удобства" надо потом читать, к примеру.
> в случае с башем (как и с любым другим, наверно, скриптовым языком) едва ли
> какой-то иной подход даст выигрыш
> в скорости (если не наоборот)
А причём здесь скорость? Скорость, вроде как, к оптимизации относится?
В особенности в sh, как мне кажется, она определяется: алгоритмом, скоростью
интерпретатора и, вызываемой программы, а к глобальным константам или передаче
параметров серьёзного отношения не имеет.
> а вот геморроя добавит, это да.
Или наоборот.
> чем смущают глобальные переменные? если очень хочется, можно добавить флаг
> read-only для пущей красоты (help set).
О, кстати, точно, константы же есть... Я и забыл. :-)
> а парсить $@, переданный в функцию - то еще развлечение.
А зачем парсить? Функции не обрабатывают ошибки. Они получают синтаксически
правильные параметры. Достаточно их сразу использовать. Если требуется
переменное число, делать shift.
> можно на ровном месте запутаться в нумерации, а потом долго ломать голову,
> что же не так.
> или же в начале функции опять растаскивать все это дело на переменные (типа
> var1=$1, var2=$2) - только лишняя головная боль.
Я делаю так (к примеру):
check_deps()
# Check for the using executables.
# $1..$n - list of executables.
{
...
# Interfaces.
backup_mysql()
# $1 - user name;
# $2 - password;
# $3 - options.
{
> плюс значения переменных могут содержать пробелы, тут тоже нужно аккуратно.
Тесты для функций.
Ну и, как правило, кавычки для каждого параметра.
> да, при загрузке переменных из конфига не стоит забывать про ситуацию, когда
> конфиг отсутствует.
> для этого можно после "source /.../configfile" заюзать конструкции вида
> var=${var:-"defaul"t}
> man bash про подобные штуки.
> данная вещь вернет значение переменной, если оно есть, а если нету - вернет
> заданный дефолт.
Дык, вообще-то про конструкции bash я знаю, тем более, про такие широко
используемые. :-)
Думаю, при отсутствии конфига, лучше сдыхать с ошибкой.
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: http://lists.debian.org/[email protected]