我在Bash中有一個數組,每個元素都是一個字符串。我怎樣才能追加另一個字符串到每個元素?在Java中,代碼如下所示:如何追加一個字符串到Bash數組的每個元素?
for (int i=0; i<array.length; i++)
{
array[i].append("content");
}
我在Bash中有一個數組,每個元素都是一個字符串。我怎樣才能追加另一個字符串到每個元素?在Java中,代碼如下所示:如何追加一個字符串到Bash數組的每個元素?
for (int i=0; i<array.length; i++)
{
array[i].append("content");
}
測試,它的工作原理:
array=(a b c d e)
cnt=${#array[@]}
for ((i=0;i<cnt;i++)); do
array[i]="${array[i]}$i"
echo "${array[i]}"
done
生產:
a0
b1
c2
d3
e4
編輯:array
的聲明可以縮短爲
array=({a..e})
爲了幫助您理解在bash中的陣列及其語法reference是一個好的開始。另外我建議你bash-hackers的解釋。
您傳遞數組的長度作爲賦值的索引。長度是基於1的,並且數組是基於0的索引,所以通過傳遞長度告訴bash將數值分配給數組中最後一個之後的插槽。要獲得數組的長度,可以使用這個${array[@]}
語法。
declare -a array
array[${#array[@]}]=1
array[${#array[@]}]=2
array[${#array[@]}]=3
array[${#array[@]}]=4
array[${#array[@]}]=5
echo ${array[@]}
主要生產
1 2 3 4 5
很好的答案。令人遺憾的是,所需的語法(罪惡稅)不能充分感嘆 – sehe
只是重讀這個問題,並意識到我回答了一些稍微不同的東西。我會在這裏留下這個答案,因爲它仍然有一些關於bash中數組的有價值的信息。 –
'array + =(1)'; '陣列+ =(2)'; ...'array + =(etc)' –
即使沒有在Bash中循環,也可以向每個數組項添加一個字符串!
# cf. http://codesnippets.joyent.com/posts/show/1826
array=(a b c d e)
array=("${array[@]/%/_content}")
printf '%s\n' "${array[@]}"
好的!這不是問題的確切答案,而是短期競爭的毋庸置疑的贏家! +1 – Rajish
Joyent鏈接已損壞,請參閱http://web.archive.org/web/20101114051536/http://codesnippets.joyent.com/posts/show/1826(該鏈接的Wayback Machine)。 –
注意:這確實在內部循環。 –
字符串是不可變的Java和沒有追加方法。 '不能找到符號 符號:方法追加(java.lang.String) location:class java.lang.String \t \t array [i] .append(「content」);'簡化的for-loop應該慢 - after 5年 - 也被採納。 'for(String s:array)System.out.println(s +「content」);' –