Команда set не может обрабатывать строки, составляющие \ n (скрипт подсчета слов / строк)

У меня проблема с выполнением цикла while, я обнаружил, что проблема связана с выполнением команды set, а назначение символа \ n переменной среды представляет собой проблему. Почему это происходит и как это решить?

мой код:

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

Когда он встречает строку, содержащую только символ новой строки, он печатает системные данные и все переменные:

CINNAMON_VERSION='1.8.8'
COLORTERM='gnome-terminal'
(...)
fname='drunk'
line=''
nol='19'
now='137'
terminal='/dev/pts/0'
[ 115] (...) указывает на пропуск всего блока системных данных

0
задан 2 August 2013 в 08:34

1 ответ

Вместо

set $line

используйте

set -- $line

Прочитайте help set, чтобы понять, почему это работает.

0
ответ дан 2 August 2013 в 08:34

Другие вопросы по тегам:

Похожие вопросы: