Я пишу сценарий оболочки TC, называемый pl_dict в unix, который принимает список английских слов в единственной форме в качестве входных данных и выводит множественную форму каждого слова в отдельной строке. Он использует файл, содержащий список слов на английском языке и другую программу c, которая принимает английское слово в единственной форме в качестве аргумента и печатает множественную форму слова. Вот мой код:Как решить ошибку «Слово слишком долго» в unix?
set dictionary = (/usr/share/dict/words)
set irregular = (/share/files/irregular.txt)
#go over all the input words
foreach word ($argv[*])
set irregularWord = `grep $word $irregular | cut -d" " -f1`
#the word is found in irregular.txt file
if ("$irregularWord" != "") then
gcc -o pluralize pluralize.c
./pluralize -f irregular.txt $word
else #the word is not found in the irregular file
#search for it in the dictionary
set realEnglishWord = `grep $word $dictionary`
#the word is a real English word
if ("$realEnglishWord" != "") then
gcc -o pluralize pluralize.c
./pluralize $word
else
echo "$word":" word not found in dictionary."
endif
endif
end
Это прекрасно работает, пока я пытаюсь запустить это: pl_dict рыба нога foox домовой мыши
Вот вывод я получаю:
fish
feet
foox: word not found in dictionary.
Word too long.
Что такое проблема и как я могу ее исправить?
спасибо.
Попробуйте несколько отладочных эхо-сигналов, чтобы узнать, что такое $ word ... grep может соответствовать нескольким строкам из словаря ... Если это так, вы можете использовать awk и выполнить точное соответствие $ 1 – technosaurus