2017-06-16 131 views
0

环exection我已经在for循环使用bash脚本

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' 

请指导我的错误。在此先感谢

+0

用'$((k + 900))'替换'((k + 900))''。 – Cyrus

+0

我按照你的说法做了。现在它给了我下面的错误:第5行:.01:语法错误:期望的操作数(错误标记为“.01”) –

回答

0

这里有两个问题:

  • 您需要更换算术运算,((k+900)),用算术扩展到输出保存在一个变量:

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

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

非常感谢。有效。帮助真的很感激。 –

+0

@AbhinavSrivastava:请看看:[我应该怎么做当有人回答我的问题?](http://stackoverflow.com/help/someone-answers) – Cyrus

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