O problema é que usar cat
em uma substituição de subshell como essa fará com que o bash tokenize a saída de acordo com IFS
, que por padrão inclui espaços. Esse é o comportamento normal de um loop for
. Provavelmente a correção mais fácil é:
while read line
do
echo $line
command $line
done < pets.txt
Observe que bash
dividirá os argumentos até command
, no entanto. Se você quisesse a linha como um argumento, basta citar:
while read line
do
echo $line
command "$line"
done < pets.txt