2016-05-17 35 views
0

我正在通過顯示數組中的所有元素來練習Bash。到目前爲止,我有Bash腳本:無法使用'@'或'*'來回顯數組中的所有值

PATH="\Directory\Stuff" 
    echo $PATH 
    Array[0]="dad" 
    Array[1]="BAD" 

如果我說

echo ${Array[0]} 

我將輸出

dad 

同樣,我會得到正確的結果訪問數組索引1的問題是這是行不通的:

echo "${Array[*]}" 

從像here在線教程來看,我應該期待它打印

dad BAD 

而是我得到

 BAD 

注意,有利空之前的空間。

我不知道爲什麼會發生這種情況。如果有幫助,我使用Cygwin和Windows。

我的問題是爲什麼我不輸出「爸爸壞」?

+1

順便說一下,'printf'%q \ n'「$ {Array [@]}」'會解決這個問題,使得您的問題非常明顯 –

回答

4

你極有可能在你Array[0]結束流浪回車(又名\r^M)。回車意味着「返回到當前行的開始」,允許任何後續文本覆蓋已經打印的內容。

所以你echo命令打印dad,於是馬上倒至行的開頭和打印 BAD,因此,所有你看到的是 BAD

要解決這個問題,你只需要刪除回車。

+1

它確實會遇到類似隱藏字符的問題 - 否則語法是正確的。 – aphorise

+0

這爲我修好了。我使用的是記事本++,您可以將文件從Windows格式(\ r \ n)切換到Linux格式(\ n):http://superuser.com/questions/479756/eol-in-notepad-and -記事本 – Cameron