2016-07-15 81 views
1

我讀了,我們這裏需要的報價,並添加引號堆棧溢出,但它ddn't幫助。整數表達式預計:猛砸

array_length=${fileNames[@]} 

COUNTER=0 

while [ "$COUNTER" -lt "$array_length" ]; do 

我得到的錯誤仍然存​​在。請幫忙。全新來砸

+0

你以前的問題應該是一個鏈接的提(您可以編輯的問題,並修復它,在幫助解釋),以幫助上下文。但是,看看你展示的短片,我發現你將一個名爲'array_length'的變量設置爲文件名列表,然後嘗試將它用作數字。除非'fileNames'只有一個元素(在這種情況下你不會使用'[0]'),並且它恰好是一個數字,那麼測試的調用就不可能奏效。 – MAP

+0

對不起,我會嘗試再次找到它。沒有幫助我,所以我關閉了它。 –

+0

參見[bash的陣列(http://tldp.org/LDP/abs/html/arrays.html) –

回答

6
array_length=${fileNames[@]} 

應該已經

array_length=${#fileNames[@]} 

對於預期的行爲,while循環應該是:

while [ "$COUNTER" -lt "$array_length" ] 
do 
. 
#do something 
. 
((COUNTER++)) # Equivalent to COUNTER=COUNTER+1 
done 

${fileNames[@]}擴展到整個陣列,同時在與#前綴它給你的元素數量。


圖片的標題說明

1.不要忘記遞增COUNTER內while循環。
2.嘗試避免像COUNTER大寫變量因爲它們通常保留給系統。

+0

謝謝,我會在5分鐘內接受它。你也可以告訴我有什麼不對的:「$ COUNTER + 1」 -lt「$ array_length」 這其中還給出了一個錯誤,如果有非常重要的概念,我將打開一個新的問題。 –

+0

@BhavyaArora:'counter + 1'不會增加'counter'。 – sjsam

+0

我不想在這裏增加它,只是想將它與下一個數字進行比較。我如何刪除錯誤。還有什麼會增加櫃檯?讓counter = counter + 1? –