Bash while loop syntax error in do

[亡魂溺海] 提交于 2019-12-12 05:08:19

问题


I´m trying do do a simple counter:

max=100
count=1
while [[ $count -le $max]]
  do
    echo "$count"
    ((count++))
  done

This gives me a syntax error in conditional expression near do.

What´s my issue? (probably something obvious)

The idea is then to raise the max from 100 to 200 and so forth in a superior loop so I will get a new file to manipulate with a python program 100 lines each time, but that´s irrelevant here.


回答1:


Your mistake is that it need one more space in [[ $count -le 100]]

max=100
count=1
while [[ $count -le $max ]]
do
    echo "$count"
    ((count++))
done

Another solution :

while ((count < max+1)); do echo $((count++)); done

or

for ((i=count; i<max; i++)) { echo $i; }

or

for ((i=count; i<max; i++)); do echo $i; done

or

for i in {1..100}; do echo $i; done



回答2:


Change the line:

while [[ $count -le 100]]

to:

while [[ $count -le 100 ]];

Notice the space after 100.



来源:https://stackoverflow.com/questions/12840769/bash-while-loop-syntax-error-in-do

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!