O seu problema é usar sh -c "..."
, consulte @s respostas de Gilles para obter mais detalhes.
Mais ainda, sh
(consulte POSIX sh ) não suporta array ( estritamente falando, ele tem apenas um array, $ @ ), você precisa ligar para outros shells no seu sistema, que suportam array como bash
, zsh
ou ksh
.
bash -c 'arr=(1 2 3 4 5);for var in "${arr[@]}";do echo "$var"; done'
Observe também que você cometeu um erro ao deixar ${arr[@]}
un-quote, na verdade você precisa de for var in "${arr[@]}"
. Invocação de variável sem aspas chamando split + glob e é fonte de muitas implicações de segurança .
Para jogar com POSIX sh, você pode usar $ @ :
set -- 1 2 3 4 5
for var do
printf '%s\n' "$var"
done