У меня есть проблема с для цикла в Bash. Например: у меня есть массив ("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» S в том же цикле.
После 2-го примера:
источник
for
Тогда используйте две петли. Сначала выполните ваши добавления, затем зациклите результат.array+=(sbin); for i in ...
Это будет перебирать ваш список, привязывать
sbin
к концу указанного списка условно и включатьsbin
в повторяемый контент.источник