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: