我以前从未做过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
答案 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