Bash

在數組的循環中,向數組中添加一個元素

  • June 22, 2015

我對 bash 中的 for 循環有疑問。例如:我有一個數組("etc" "bin" "var")。我迭代這個數組。但在循環中,我想在數組中附加一些值。例如

array=("etc" "bin" "var")
for i in "${array[@]}"
do
echo $i
done

這顯示etc bin var(當然在單獨的行上)。如果我do像這樣追加:

array=("etc" "bin" "var")
for i in "${array[@]}"
do
array+=("sbin")
echo $i
done

我想要:(etc bin var sbin當然在單獨的行上)。

這是行不通的。我該怎麼做?

它將按應有的方式附加“sbin”3 次,但不會在同一個循環中迭代新添加的“sbin”。

在第二個例子之後:

echo "${array[@]}"
#=> etc bin var sbin sbin sbin
set etc bin var
while [ "$#" -gt 1 ]
do    [ "$1" = bin ] &&
     set "$@" sbin
     printf %s\\n "$1"
shift;done 

這將遍歷您的列表,sbin有條件地附加到所述列表的末尾,並包含sbin在可迭代的內容中。

引用自:https://unix.stackexchange.com/questions/211395