9/08/2009

Перебор аргументов в shell скрипте.

Вчера открыл для себя очень удобную возможность в shell-скриптах:
оказывается если в цикле for не задать список аргументов, то в качестве оного используется переменная $@ - список аргументов командной строки.
Вот пример:
for i
do
echo $i;
done

5 комментариев:

  1. Плюсы: короче запись
    Минусы: 1) снижается читабельность, 2) использование поведения по умолчанию всегда определённый риск

    ОтветитьУдалить
  2. А в чем заключается риск при использовании поведения по умолчанию?

    ОтветитьУдалить
  3. а просто for i in "$@"; do ...; done ?

    Семантика та же, но значительно понятнее, чем сокращённая запись.

    ОтветитьУдалить
  4. Ещё можно так, иногда удобнее:

    while [ $# -gt 0 ]; do
    echo $1 ; shift ;
    done

    ОтветитьУдалить
  5. прошу извинения за резкость ... напомнило старую хохму: "попробовал женщину ... жалкое подобие левой руки" ...

    ОтветитьУдалить