O comando set não pode manipular linhas que constituem um \ n (script de contagem de palavras / linhas)

0

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

    
por denuviel 02.08.2013 / 06:34

1 resposta

0

Em vez de

set $line

use

set -- $line

Leia help set para ver por que isso funciona.

    
por edwin 02.08.2013 / 07:00