[英]How to append a string to each element of a Bash array?
我在Bash中有一個數組,每個元素都是一個字符串。 如何將另一個字符串附加到每個元素? 在Java中,代碼類似於:
for (int i=0; i<array.length; i++)
{
array[i].append("content");
}
您甚至可以在每個循環項中附加一個字符串,而無需在Bash中循環!
# cf. http://codesnippets.joyent.com/posts/show/1826
array=(a b c d e)
array=( "${array[@]/%/_content}" )
printf '%s\n' "${array[@]}"
正如hal所提到的
array=( "${array[@]/%/_content}" )
會將'_content'字符串附加到每個元素。
array=( "${array[@]/#/prefix_}" )
將在每個元素之前添加“ prefix_”字符串
經過測試,它的工作原理是:
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中的數組及其語法,該參考是一個好的開始。 我也建議您對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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.