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

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

我在 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当然在不同的行上)。

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

答案1

将要按应有的方式追加“sbin”3次,但它不会在同一循环中迭代新添加的“sbin”。

在第二个例子之后:

echo "${array[@]}"
#=> etc bin var sbin sbin sbin

答案2

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

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

相关内容