Em um loop sobre uma matriz, adicione um elemento à matriz

9

Eu tenho um problema com loop for no bash. Por exemplo: Eu tenho uma matriz ("etc" "bin" "var") . E eu iterar nessa matriz. Mas no loop eu gostaria de acrescentar algum valor ao array. Por exemplo,

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

Isso exibe etc bin var (claro, em linhas separadas). E se eu acrescentar depois de do assim:

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

Eu quero: etc bin var sbin (claro, em linhas separadas).

Isso não está funcionando. Como posso fazer isso?

    
por damekr 22.06.2015 / 19:38

2 respostas

6

Ele irá acrescentar "sbin" 3 vezes como deveria, mas não irá repetir os "sbin" s recém-adicionados no mesmo loop.

Após o segundo exemplo:

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

Isso iterará sua lista, coloque sbin no final da lista e inclua sbin no conteúdo iterável.

    
por 22.06.2015 / 21:29

Tags