Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Відсутні або неочікувані токени

Іншою поширеною помилкою є забуття виконати складену команду, наприклад if or в той час як. Давайте подивимося, що станеться, якщо видалити крапку з комою після тест , if команда:



#! / бін / баш


# проблема: скрипт для демонстрації поширених помилок number=1

якщо [ $number = 1 ] то

echo "Число дорівнює 1." інше

echo "Число не дорівнює 1."

fi

#! / бін / баш


# проблема: скрипт для демонстрації поширених помилок number=1

якщо [ $number = 1 ] то

echo "Число дорівнює 1." інше

echo "Число не дорівнює 1."

fi


Результат такий:



[me@linuxbox ~]$ біда

/home/me/bin/trouble: рядок 9: синтаксична помилка біля неочікуваного маркера

`інше'

/home/me/bin/trouble: рядок 9: `Інше'

[me@linuxbox ~]$ біда

/home/me/bin/trouble: рядок 9: синтаксична помилка біля неочікуваного маркера

`інше'

/home/me/bin/trouble: рядок 9: `Інше'


Знову ж таки, повідомлення про помилку вказує на помилку, яка виникає пізніше, ніж фактична проблема. Те, що відбувається, дійсно досить цікаво. Як ми пам'ятаємо, if приймає список команд і оцінює код виходу останньої команди в списку. У нашій програмі ми плануємо, щоб цей список складався з однієї команди, [, синонім тесту. The [ команда приймає наступне за нею як список аргументів; у нашому випадку чотири аргументи: $ номер, 1, = та ]. Слово з вилученою крапкою з комою потім додається до списку аргументів, що є синтаксично законним. Наступні нудьгувати команда також законна. Це інтерпретується як інша команда в списку команд, які if оцінюватиме код виходу. The ще наступне зустрічається, але він недоречний, оскільки оболонка розпізнає його як a застережене слово (слово, яке має особливе значення для оболонки), а не назва команди, звідси й повідомлення про помилку.


Найпопулярніші хмарні обчислення ОС на OnWorks: