Eu estava tentando criar uma função que faz um loop nas entradas e executa um comando - independentemente de como elas são delimitadas.
function loop {
# Args
# 1: Command
# 2: Inputs
for input in "$2" ; do
$1 $input
done
}
declare -a arr=("1" "2" "3")
$ loop echo "$arr[@]"
1
$ loop echo 1 2 3
1
$ loop echo $arr
1
No entanto, de acordo com esta resposta, for .. in ..
funciona para matrizes:
for item in "${arr[@]}" ; do
echo "$item"
done
Também funciona para valores separados por espaço:
for item in 1 2 3 ; do
echo "$item"
done
Em poucas palavras, como obtenho o efeito de "${arr[@]}"
e 1 2 3
ao passar um argumento.
Também seria possível estender essa noção de loop para qualquer tipo de itens delimitados, por exemplo, \n
conteúdos separados como um arquivo? Em Python temos um conceito de iterators
, existe algo parecido no bash?