[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Подстановка переменного числа аргументов



Victor Wagner wrote:
> Ну во-первых, можно подумать о подстановках вида ${FOO:+--foo "${FOO}"}
> 
> Это на тот случай если задача ставится так "Если перемная FOO не пуста,
> подставляем ключик --foo "$FOO", иначе не делаем ничего.

Спасибо, вот это -- пойдёт. Только проверка не на FOO, а на вспомогательную 
переменную, пустота которой зависит от условий.

Но всё же шелл -- очень непоследовательный язык.

> Во-вторых, можно подумать об использовании команды set, которая позволит
> засунуть нужные параметры на место аргументов шелловского скрипта. И
> потом подставлять через "$@" - c cохранением разбиения на аргументы.

Тот ещё изврат. И не годится для нескольких опциональных подстановок. И 
вызов функций всё портит. Нет, не буду.

> В-третьих, почитать доку на специфические возможности используемого
> шелла. Может быть в bash или zsh есть специальные удобные средства для
> этой цели.

Это несложный скрипт, башизмы не используются. Если можно, я стараюсь писать 
и проверять скрипты для dash.

> В-четвертых, можно аккуратно квотить дважды.  В смысле
>  OPTS="--foo \"\$FOO\"" или OPTS="--foo \"$FOO\"" (почувстуйте разницу
>  между этими двумя вариантами.

Первый, очевидно, не делает того, что надо (если не использовать eval, а с 
ним код превратится в совсем нечитаемую кашу). Второй не работает, если в 
FOO есть кавычки (да и без них, похоже, без eval-а не обойтись). Не надо 
такое счастье.


Reply to: