Я намагаюся створити додаток 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. (Або можете залишити їх; я думаю, це питання стилю.)… (Продовження)