2017-03-02 88 views
4

我試圖讓在while循環數組,需要太多更新陣列的價值。「[0:找不到命令」中的Bash

下面是我的代碼是什麼我都試過了。我得到這個錯誤[0: command not found

#!/bin/bash 
i=0 
while [$i -le "{#myarray[@]}" ] 
do 
    echo "Welcome $i times" 
    i= $(($i+1))) 
done 

我很感謝所有的幫助和提前致謝!

+0

我發現Greg的維基在bash的學習非常有幫助:http://mywiki.wooledge.org/BashGuide/TestsAndConditionals – kalaracey

回答

8

之前或在分配=後需要[後和空間沒有空間。 $(($i+1)))將嘗試執行((...))表達的輸出,我相信這不是你想要的。此外,你缺少數組名前$

有了這些東西糾正,while循環將是:

#!/bin/bash 
i=0 
while [ "$i" -le "${#myarray[@]}" ] 
do 
    echo "Welcome $i times" 
    i=$((i + 1)) 
done 
  • i=$((i + 1))也可以寫爲((i++))
  • 它始終是更好地圍內[ ... ]
  • 檢查在雙引號中的變量你的腳本通過shellcheck - 你可以找到最基本的問題

參見:

+1

對於一個有問題的問題的一個很好的答案(足夠寬泛,可以分解爲多個模糊,正如你已經指出的那樣刪除)。 –