2013-11-28 37 views
0

什麼是 「@」 的含義, 代碼:

#!/bin/bash 

array[0]=1 
array[1]=2 
array[2]=3 
array[3]=4 
array[4]=5 

#work 
for num in ${array[@]} 
do 
    echo $num 
done 

#not work 
for num in array 
do 
    echo $num 
done 

在循環,爲什麼要使用$ {數組[@]}不$陣列,THX

回答

1

這是語言定義的語法。這就是它的工作原理。請在man bash中閱讀它,搜索標題爲「陣列」的部分。這裏的相關部分:

陣列的任何元件可以使用$引用{名稱[下標]}。 花括號是避免與路徑名擴展衝突所必需的。如果 下標是@或*,則該單詞擴展爲名稱的所有成員。這些 下標僅在單詞出現在雙引號內時纔有所不同。如果 字被雙引號,$ {名稱[*]}擴展爲與由IFS 特殊變量的第一個字符分隔每個陣列成員的 值的單個字,和$ {名稱[@]}膨脹每個元素的名稱以sep- 爲理由。當沒有陣列成員時,$ {name [@]}擴展爲 什麼也沒有。如果一個字內出現雙引號的擴張,擴張 第一個參數是加入與 開始部分原詞,最後一個參數的擴張加盟 與原詞的最後一部分。這類似於 特殊參數*和@的擴展(見上面的特殊參數 )。

0

$array不起作用像一個陣列。它更像是${array[0]}

0

$array計算結果爲所述陣列中的第一個元素。您必須使用${array[@]}(或更恰當地說,"${array[@]}")依次指示數組中的每個元素,並用$IFS的第一個字符分隔。