【发布时间】:2011-12-04 21:35:11
【问题描述】:
此代码是读取文本文件的目录并将其与 input.txt 匹配。我从 input.txt 中得到了这个词,但我不知道如何从文本文件中提取每个词并进行比较。该文件是段落形式,所以我无法寻找类似的字符等。有没有办法一次一个地阅读每个单词并进行比较?
#!/bin/bash
findkeyword () {
file="$1"
keyword="$2"
value="$3"
count=0
while read line
do
#问题就在这里
set -- $line
a=$(expr length "$file")
for i in '$line'; do
if [ "$i" = "$keyword" ]; then
count=`expr $count + 1`;
fi
done
done <$file
echo "Profile: " $file
scorefile $value $count
}
scorefile () {
value="$1"
count="$2"
echo "Score: " $((value * count))
}
while read line
do
set -- $line
keyword=$1
value=$2
echo "key: " $keyword
echo "value: " $value
for xx in `ls submissions/*`
do
filename=$xx
findkeyword $filename $keyword $value
done
done <input.txt
【问题讨论】:
-
你已经做了
set -- $line,这正是你所要求的。此时你已经有了“$@”中的单词。 -
另外引用
'$line'可以防止扩展。如果你去掉单引号,你的代码应该做你想做的事(尽管仍然不是很优雅)。您似乎根本没有使用a的值,并且set -- $line在findkeywords函数中没有做任何事情。