簡體   English   中英

如何將字符串追加到Bash數組的每個元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM