Com for
e IFS :
#!/bin/bash
IFS=$'\n' # make newlines the only separator
set -f # disable globbing
for i in $(cat < "$1"); do
echo "tester: $i"
done
Note, entretanto, que ele irá ignorar as linhas vazias, pois nova linha é um caractere IFS-branco, as sequências contadas como 1 e as iniciais e posteriores são ignoradas. Com zsh
e ksh93
(não bash
), você pode alterá-lo para IFS=$'\n\n'
para que a nova linha não seja tratada especialmente, mas observe que todos os caracteres à direita da nova linha linhas vazias) serão sempre removidos pela substituição do comando.
Ou com read
(não mais cat
):
#!/bin/bash
while IFS= read -r line; do
echo "tester: $line"
done < "$1"
Lá, as linhas vazias são preservadas, mas observe que ela ignoraria a última linha se não estivesse adequadamente delimitada por um caractere de nova linha.