2015-07-25 4 views
-1

У меня есть сценарий, какБесконечный цикл с Башем

#!/bin/bash 
for i in {1..xx};do break="$i" 
If....; then Some command 
else break;fi 
done 

мне нужно то, что может повторить этот сценарий п раз с увеличивающимися $ я.

Я попробовал этот

For ((; ;)); do i=1 && echo $i && ((i++));done 

Но это всегда показывает 1 не увеличивающееся число также пыталось $((i+=1)).

Место, где xx должно быть бесконечным номером.

Где break="$i" дает мне сколько раз повторял скрипт. Так что извините за плохой английский.

+1

'while true; do ((i ++)); echo $ i; done' – Cyrus

+0

'{1..xx}' недействителен, вам нужно '$ (seq 1 $ xx)' или подобное. Ваша попытка бесконечного цикла в порядке, но ваша проблема заключается в том, что вы каждый раз устанавливаете 'i = 1', поэтому он устанавливается в 1, печатается, увеличивается, а затем снова устанавливается на 1 ... Как @Cyrus предлагает, луч 'while' лучше. Также поймите, что 'break =" $ i "' не имеет особого значения - 'break' просто рассматривается как переменная в этом контексте. – Qualia

+0

@cyrus i = 1 && команда cyrus работает ... Спасибо – makgun

ответ

0

Использование for для создания бесконечного цикла является унииоматическим, но не жестким. Просто сделайте условие окончания истинным; или, тривиально, опустить его.

for((i=0; ;++i)); do 
    echo "$i" 
done 
+0

Он всегда повторяется как '0' do yo есть идея – makgun

+0

Вместо' ++ 1' я использовал '((i ++))' и он работает. Спасибо .. – makgun

+0

Если это решило вашу проблему, отметьте ее как принятую (нажмите большую галочку с полого на зеленый), чтобы этот вопрос больше не возникал как неразрешенный. Благодарю. – tripleee

Смежные вопросы