Você está dizendo que enquanto o IFS foi definido como $' \t\n'
, seu loop será executado. Deve ser algo assim:
while IFS=$' \t\n' read -r val
do
((lines++))
echo "lines=$lines val=$val"
done < myfile
O valor padrão de IFS
deve ser $' \t\n'
, portanto, defini-lo como redundante. Eu também acredito que read
por padrão lerá linhas inteiras, e eu acho que mesmo configurar o IFS para $' '
ainda fará com que ele leia toda a linha.
Se você quiser que read
delimite por espaços, você pode usar a opção -d
desta forma:
read -r -d' ' val
do
((lines++))
echo "lines=$lines val=$val"
done < myfile
Isso irá percorrer todas as strings delimitadas por espaços em myfile
.