Скрипт, который вы написали, будет считать строки и т.д. в строке, введенной пользователем, а не в файле, соответствующем этому имени.
Это скрипт, который делает то, что вы хотите, а также жалуется, если файл не существует или не является обычным файлом:
#!/bin/sh
echo "Enter filename"
read fname
if [ ! -f "$fname" ]; then
echo "No such file!" >&2
exit 1
fi
lines=$( wc -l <"$fname" )
words=$( wc -w <"$fname" )
chars=$( wc -c <"$fname" )
printf 'The file "%s" has %d lines, %d words and %d characters\n' \
"$fname" "$lines" "$words" "$chars"
Чтобы не вызывать wc
три раза:
#!/bin/sh
echo "Enter filename"
read fname
if [ ! -f "$fname" ]; then
echo "No such file!" >&2
exit 1
fi
printf 'The file "%s" has %d lines, %d words and %d characters\n' \
"$fname" $( wc <"$fname" )
Здесь используется тот факт, что wc
по умолчанию выводит количество строк, слов и символов. Этого будет достаточно, если вы просто хотите, чтобы они выводились следующим образом.