使用bash脚本进行循环执行

时间:2017-06-16 05:15:00

标签: bash loops for-loop

我有以下for循环

 for ((i=0;i<=110;i++))
 do
   j=0.01
   k="$(echo "$i"*"$j" | bc)"
   l=((k+900))
   echo "$l"
 done

当我运行此代码时,它会出现以下错误:

line 5: syntax error near unexpected token `('
line 5: `l=((k+900))'
line 7: syntax error near unexpected token `done'
line 7: `done'

请指导我完成错误。提前致谢

2 个答案:

答案 0 :(得分:0)

有两个问题:

  • 您需要将算术运算((k+900))替换为算术扩展,以将输出保存在变量中:

    l=$((k+900))
    
  • 其次,bash不能进行浮点运算,因此当变量k包含浮点数时,加法会导致语法错误。您需要将bash的算术替换为bc(内部命令替换):

    l=$(echo "$k +900" | bc)
    

答案 1 :(得分:0)

一个注意事项,你可以在bash中更容易地做这些类型的循环。此外,由于bash不支持浮点数,我只会调用python并编写类似的内容。

#!/bin/bash

for i in {1..110}; do
    j="0.01"
    k="$(python -c "print($i * $j)")"
    l="$(python -c "print($k + 900)")"
    echo "$l"
done