2017-02-03 68 views
-1

我想聲明並追加到bash腳本數組,搜索後,我產生了這個代碼。猛砸數組聲明和appendation

list=() 
list+="string" 

但是,當我回應這個結果在什麼都沒有。 我也試圖追加到數組這樣

list[$[${#list[@]}+1]]="string" 

我不明白爲什麼這是行不通的,任何人有什麼建議?


編輯: 該問題列表被附加到在while循環中。

list=() 

git ls-remote origin 'refs/heads/*' | while read sha ref; do 
    list[${#list[@]}+1]="$ref" 
done 

declare -p list 

看到stackoverflow.com/q/16854280/1126841

+0

你怎麼迴音它出來了嗎? – Inian

+0

我曾嘗試 '回聲 「$ {list}裏」', '回聲 「$目錄」' 和 '回聲$列表' –

+0

你可以嘗試'回聲 「$ {列表[0]}」' – Inian

回答

3

您可以將新的字符串到你的數組是這樣的:

#!/bin/bash 

mylist=("number one") 

#append "number two" to array  
mylist=("${mylist[@]}" "number two") 

# print each string in a loop 
for mystr in "${mylist[@]}"; do echo "$mystr"; done 

欲瞭解更多信息,您可以檢查http://wiki.bash-hackers.org/syntax/arrays

+0

OP已經使用正確的操作符來追加到數組;這不會有所作爲。 – chepner

0

Ali OkanYüksel已經寫下了你提到的有關在數組中添加項目的第一種方法的答案。

list+=(newitem another_new_item ···) 

你提到的第二個方法,正確的做法是:

list[${#list[@]}]="string" 

假設一個非稀疏陣列具有N項目,因爲bash的數組索引從0,在最後一個項目啓動該陣列是N-1 th。因此,下一個項目必須在N位置(${#list[@]})被添加;不一定在你寫的N+1

相反,如果使用稀疏陣列,它是提供了數組的索引bash parameter expansion非常有用:

${!list[@]} 

例如,

$ list[0]=3 
$ list[12]=32 
$ echo ${#list[@]} 
2 
$ echo ${!list[@]} 
0 12