在bash中循环

时间:2012-03-24 20:51:32

标签: bash while-loop

我是新手来编写脚本并尝试学习一些东西。这是我尝试过的代码:

n=$1
shift

echo "Printing your name $n times"
count=1
for ((i=1;i<=$n;i++))
do
    echo $@ -$i
    count='expr[$count+1]'
done

echo 'New Model'
count=1
while ["$count" -le "$n"]
do
    echo $@ -$i
    count='expr[$count+1]'
done

for循环工作正常,但while循环不打印所需的结果。 for循环的结果应该是相同的。你能告诉我哪里出错了吗?谢谢。

3 个答案:

答案 0 :(得分:3)

一个问题是括号周围需要空格,以便bash知道它们是单独的单词。也就是说,改变这个:

while ["$count" -le "$n"]

到此:

while [ "$count" -le "$n" ]

另一个是:

count='expr[$count+1]'

实际上将变量count设置为特定字符串expr[$count+1]。你的意思是:

count=$((count+1))

count的值增加1。

答案 1 :(得分:2)

增加变量的另一种方法:

#!/bin/bash

count=1

#count=`expr $count + 1 `
#(( count++ ))
#count=$[$count + 1]
#count=$[count + 1]
#let count=count+1
#let count++
#count=$(( count + 1 ))

echo $count

答案 2 :(得分:1)

试试这个:

count=1
while [ "$count" -le "$n" ]
do
echo $@ -$i
count=`expr $count + 1`
done

while条件中需要有空格。并且count的增量需要反引号而不是单引号来执行命令并将其分配给变量。