for shell / if shell脚本中的条件

时间:2010-08-06 10:15:34

标签: bash shell

我以前从未做过shell脚本,现在我遇到了一个简单的问题...... 我有一个for循环,每次运行run.sh脚本时都会执行。要查看脚本已经运行了多远,我想打印例如每5000个实际指数。

$counter = 0
for ((  i = 0 ;  i <= 5000;  i++  ))do
    if ($i =  $counter); then
            echo "$counter"
            counter=$(counter+1000)
    fi
./run.sh
done

运行这段代码会给我以下错误

./for_loop.sh: line 1: =: command not found
./for_loop.sh: line 3: 0: command not found

我还尝试使用

初始化变量计数器
declare -i counter = 0

给了我以下错误

./for_loop.sh: line 1: declare: `=': not a valid identifier

3 个答案:

答案 0 :(得分:6)

你真的不需要两个计数器。单个计数器就足够了:

for (( counter = 0; counter <= 5000; counter++ ))
do
    if (( counter % 1000 == 0 ))
    then
            echo "$(( counter / 1000 ))"
    fi
    ./run.sh
done

执行run.sh 5000次并每1000次迭代打印计数器值。请注意,%是模运算符,它计算除法后的余数,/是整数除法运算符。

答案 1 :(得分:4)

第1行应该是:(没有$,'='周围没有额外的空格)

counter=0

第3行应该是:(方括号,' - eq'因为'='用于字符串相等)

if [ $i -eq $counter ]

第5行应该是:(双括号)

counter=$((counter+1000))

答案 2 :(得分:1)

在第3行中,我认为您错误地将作业=误认为是==

http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic