Я пытаюсь создать сценарий оболочки, который может подсчитывать слова и строки в файле. (да, я знаю, что вы можете сделать это с помощью wc, но только ради изучения циклов)
Код
echo "enter filename"
read f
if [ -s $f ]
then
terminal=`tty`
exec < $f
nol=0
now=0
while read line
do
nol=`expr $nol + 1`
set $line
now=`expr $now + $#`
done
echo "No.of lines in the file =$nol"
echo "No.of words in the file =$now"
exec < $terminal
fi
ожидаемый вывод:
No.of lines in the file =3
No.of words in the file =166
Фактический результат:
$ sh wc.sh
enter filename
spock.txt
CLUTTER_IM_MODULE='xim'
COLORTERM='gnome-terminal'
COMPIZ_BIN_PATH='/usr/bin/'
COMPIZ_CONFIG_PROFILE='ubuntu'
DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-PfcwnNxO9c'
DEFAULTS_PATH='/usr/share/gconf/ubuntu.default.path'
DESKTOP_SESSION='ubuntu'
DISPLAY=':0'
...
XDG_MENU_PREFIX='gnome-'
XDG_RUNTIME_DIR='/run/user/1000'
XDG_SEAT='seat0'
XDG_SEAT_PATH='/org/freedesktop/DisplayManager/Seat0'
XDG_SESSION_ID='c1'
XDG_SESSION_PATH='/org/freedesktop/DisplayManager/Session0'
XDG_VTNR='7'
XMODIFIERS='@im=ibus'
_='/bin/sh'
f='spock.txt'
line=''
nol='2'
now='66'
terminal='/dev/pts/0'
No.of lines in the file =3
No.of words in the file =166
Может ли кто-нибудь уточнить, что я делаю неправильно? спасибо.