Em vez de
set $line
use
set -- $line
Leia help set
para ver por que isso funciona.
Eu tenho um problema com a execução de um loop while, descobri que o problema envolve a execução do comando set, o assigment do caractere \ n para uma variável de ambiente constitui um problema. Por que isso acontece e como resolvê-lo?
meu código é:
echo "Enter a filename:\c"
read fname
terminal='tty'
exec < $fname
nol=0
now=0
while read line
do
nol='expr $nol + 1'
set $line
now='expr $now + $#'
done
echo "Number of lines:$nol"
echo "Number of words:$now"
exec < $terminal
Quando ele encontra uma linha com nada além de um caractere de nova linha, ele imprime dados do sistema e todas as variáveis:
CINNAMON_VERSION='1.8.8'
COLORTERM='gnome-terminal'
(...)
fname='drunk'
line=''
nol='19'
now='137'
terminal='/dev/pts/0'
(...) indica omissão de um bloco inteiro de dados do sistema
Em vez de
set $line
use
set -- $line
Leia help set
para ver por que isso funciona.