Bash
在數組的循環中,向數組中添加一個元素
我對 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
在可迭代的內容中。