2017-06-16 165 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