Я пытаюсь создать приложение spritz. Все работало нормально, но со вчерашнего дня я продолжаю получать эту ошибку:
./spritz: строка 176: синтаксическая ошибка: неожиданный конец файла
Я проверил файл сценария, и все кажется идеальным. Я запутался, у меня наконец-то есть утверждение if, и оно выглядит правильно! Вот последняя часть:
#checks if speed is 150
157 if [[ $2 -eq 150 ]];
158 then
159 starttime=$SECONDS
160 FS=$'\n'
161 for j in `grep --color=always -iP '\b[^aeiou\s]*[aeiou][^aeiou\s]*\K[aeiou]' $1`;
162 do
163 #Reads the text file in the centre of the screen
164 echo " ___________________"
165 echo " $j";
166 echo " ___________________"
167 echo " Speed 150 wpm"
168 sleep 0.9;
169 clear;
170 done
171 endtime=$(($SECONDS - $starttime))
172 echo "You read $words_read words in $endtime seconds!"
173 exit 8
174 fi
Что может вызвать эту ошибку?
"$1"
, "$2"
, "$SECONDS"
и "$starttime"
. (3) Проще читать и отлаживать код с отступом. (4) Почему вы настраиваете, FS
а затем не используете его? (5) `…`
может быть написано $(…)
. (6) $(($SECONDS - $starttime))
может быть эквивалентно написано $((SECONDS - starttime))
. Опять же, это в основном вопрос стиля. (7) Почему вы печатаете "$words_read"
в цикле, если вы не изменяете его в цикле?
`grep …`
список значений. Другими словами, используйте процесс устранения.
"$1"
нужно только цитировать, (объявление 4), вероятно, он имел в виду IFS
(а не FS
)?
;
(точка с запятой) в конце строки , Вы можете удалить точки с запятой в концах строк 157, 161, 165, 168 и 169. (Или вы можете оставить их; я думаю, это вопрос стиля.)… (Продолжение)