2010-04-18 2 views
1

Каково название и синтаксис конструкции ((..)) в примере ниже?Числовые циклы в оболочке

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

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

ответ

2

В разделе §3.2.4.2 части 'Bash Reference Manual' (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

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

4

Вы можете проверить Advanced Bash Scripting Guide's section on Loops на другие примеры циклов, кроме C-style for loop, которые вы указали.

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

$ 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 
Смежные вопросы