这个问题在这里已有答案:
我试图在给定的文件中找到最长的单词。在我检查每个单词的长度之前,我需要删除所有可能附加(一次或多次)单词的以下标记{,。:}。例如,对于这个文本:
:,猫狗,百科全书;去掉:。,
我需要结果:
猫狗百科全书删除
我正在尝试这个,但我得到一个“未找到命令”:
longest=0
for word in $(<$1)
do
#new_word = $(echo "${word//[.,:]/}")
new_word = "${word//[.,:]/}"
len=${#new_word}
if (( len > longest ))
then
longest=$len
longword=$new_word
fi
done
echo The longest word is $longword and its length is $longest.
谢谢。
您使用参数扩展替换模式是正确的。
问题是在=
(通常是任何shell)中声明变量时,bash
周围不得有任何空格。
所以,以下应该工作:
new_word="${word//[.,:]/}"
顺便说一下,使用while read ...
构造来循环文件中的行,使用for
非常脆弱。