这里我找不到文本文件中的单词数。我需要做出哪些可能的改变?
tty
在此计划中的用途是什么?
echo "Enter File name:"
read filename
terminal=`tty`
exec < $filename
num_line=0
num_words=0
while read line
do
num_lines=`expr $num_lines + 1`
num_words=`expr $num_words + 1`
done
答案 0 :(得分:0)
tty
命令打印连接到标准输出的终端的名称。在你的程序环境中,它没有任何重要意义,你也可以删除该行并运行。
关于单词计算的数量,您需要解析每一行并使用空格作为分隔符来查找它。目前,该计划只找到行数$num_lines
并对$num_words
使用相同的计算。
答案 1 :(得分:0)
使用数组读取文件中的单词数有一种简单的方法:
#!/bin/bash
[ -n "$1" ] || {
printf printf "error: insufficient input. Usage: %s\n" "${0//\//}"
exit 1
}
fn="$1"
[ -r "$fn" ] || {
printf "error: file not found: '%s'\n" "$fn"
exit 1
}
declare -i cnt=0
while read -r line || [ -n "$line" ]; do # read line from file
tmp=( $line ) # create tmp array of words
cnt=$((cnt + ${#tmp[@]})) # add no. of words to count
done <"$fn"
printf "\n %s words in %s\n\n" "$cnt" "$fn" # show results
exit 0
<强>输入强>
$ cat dat/wordfile.txt
Here I could not find the number of words in the text file. What
would be the possible changes do I need to make? What is the use
of tty in this program?
<强>输出:强>
$bash wcount.sh dat/wordfile.txt
33 words in dat/wordfile.txt
wc -w确认:
$ wc -w dat/wordfile.txt
33 dat/wordfile.txt
<强> TTY吗
使用terminal=tty
将当前交互式shell的终端设备分配给terminal
变量。 (这是一种确定您所连接的tty
设备的方法,例如/dev/pts/4
)