<Попередній | зміст | Наступна>
Відсутні лапки
Якщо ми відредагуємо наш сценарій і видалимо кінцеву цитату з аргументу, наступного за першим
команда ехо:
#! / бін / баш
# проблема: скрипт для демонстрації поширених помилок number=1
якщо [ $число = 1 ]; тоді
echo «Число дорівнює 1.
ще
echo "Число не дорівнює 1."
fi
#! / бін / баш
# проблема: скрипт для демонстрації поширених помилок number=1
якщо [ $число = 1 ]; тоді
echo «Число дорівнює 1.
ще
echo "Число не дорівнює 1."
fi
Дивіться, що відбувається:
[me@linuxbox ~]$ біда
/home/me/bin/trouble: рядок 10: неочікуваний EOF під час пошуку відповідного `"'
/home/me/bin/trouble: рядок 13: синтаксична помилка: неочікуваний кінець файлу
[me@linuxbox ~]$ біда
/home/me/bin/trouble: рядок 10: неочікуваний EOF під час пошуку відповідного `"'
/home/me/bin/trouble: рядок 13: синтаксична помилка: неочікуваний кінець файлу
Він генерує дві помилки. Цікаво, що номери рядків, які повідомляються в повідомленнях про помилки, містяться не там, де була видалена відсутня цитата, а набагато пізніше в програмі. Якщо ми стежимо за програмою після відсутньої цитати, ми можемо зрозуміти, чому. бити продовжуватиме шукати кінцеву цитату, доки не знайде одну, що й робить одразу після другої нудьгувати команда. Після того, бити стає дуже розгубленим. Синтаксис наступного if команда порушена, оскільки fi Оператор тепер знаходиться всередині рядка в лапках (але відкритого).
У довгих сценаріях таку помилку може бути досить важко знайти. Використання редактора з підсвічуванням синтаксису допоможе, оскільки в більшості випадків він відображатиме рядки в лапках у відмінний від інших видів синтаксису оболонки. Якщо повна версія натиск встановлено, підсвічування синтаксису можна ввімкнути, ввівши команду:
:синтаксис увімкнено
:синтаксис увімкнено