числовые циклы в оболочке - PullRequest
1 голос
/ 18 апреля 2010

как называется и синтаксис конструкции ((..)) в примере ниже?

for ((i=1;i<10;i++)) do echo $i; done

у него странная переменная i
где другие конструкции для числовых циклов в оболочках?

Ответы [ 3 ]

4 голосов
/ 18 апреля 2010

Вы можете проверить раздел Advanced Bash Scripting Guide на Loops , чтобы получить больше примеров конструкций циклов, кроме C-стиля для цикла , который вы перечислили.

Попробуйте также:

$ for i in {1..5}; do echo $i; done # range argument
1
2
3
4
5
$ for i in `seq 1 5`; do echo $i; done # iterate over seq command
1
2
3
4
5
2 голосов
/ 18 апреля 2010

В разделе §3.2.4.2 «Справочного руководства Bash» (4.0) нотация «((...))» классифицируется как арифметическое выражение. Он тесно связан с нотацией '$((...))', описанной в §3.5.5 как арифметическое расширение. А в п. 3.2.4.1 «Циклические конструкции» сказано:

Также поддерживается альтернативная форма команды for:

    for (( expr1 ; expr2 ; expr3 )) ; do commands ; done

Сначала арифметическое выражение expr1 оценивается в соответствии с описанными правилами. ниже (см. раздел 6.5 [Оболочечная арифметика], стр. 78). Арифметика Затем выражение expr2 оценивается многократно, пока оно не станет равным нулю. каждый время expr2 оценивается как ненулевое значение, команды выполняются и арифметика Выражение expr3 оценивается. Если какое-либо выражение опущено, оно ведет себя как если он равен 1. Возвращаемое значение - это статус выхода последней команды в список, который выполняется, или false, если какое-либо из выражений недопустимо.

1 голос
/ 18 апреля 2010

bash(1) справочная страница, ГРАММА ОБОЛОЧКИ раздел, Составные команды подраздел. Другие варианты числовых циклов: while и until с ручным приращением.

...