在数组的循环中,向数组添加一个元素

dam*_*ekr 10 bash array for

我在 bash 中使用 for 循环有问题。例如:我有一个数组("etc" "bin" "var")。我在这个数组上迭代。但在循环中,我想在数组中附加一些值。例如

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

这显示etc bin var(当然在单独的行)。如果我do像这样追加:

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

我想要:(etc bin var sbin当然在不同的行)。

这是行不通的。我该怎么做?

PSk*_*cik 6

追加“sbin目录”的3倍,因为它应该,但它不会遍历新增的“sbin目录” S在同一个循环。

在第二个例子之后:

echo "${array[@]}"
#=> etc bin var sbin sbin sbin
Run Code Online (Sandbox Code Playgroud)


mik*_*erv 5

set etc bin var
while [ "$#" -gt 1 ]
do    [ "$1" = bin ] &&
      set "$@" sbin
      printf %s\\n "$1"
shift;done 
Run Code Online (Sandbox Code Playgroud)

这将遍历您的列表,sbin有条件地添加到所述列表的末尾,并包含sbin在可迭代内容中。