Bash определенно толковано; Я не думаю, что в этом есть разумный вопрос.
Возможно, возникнут некоторые разногласия по поводу того, является ли это языком. Он разработан в основном для интерактивного использования, выполняя команды, предоставляемые операционной системой. Для многих этого конкретного вида использования, если вы просто набрав команды, как
echo hello
или
cp foo.txt bar.txt
это легко думать, что это «просто» для выполнения простых команд. В этом смысле он сильно отличается от интерпретируемых языков, таких как Perl и Python, которые, хотя они могут использоваться в интерактивном режиме, в основном используются для написания сценариев сценариев (интерпретируемые программы).
Одним из следствий этого акцента является то, что его дизайн оптимизирован для интерактивного использования. Строки не требуют кавычек, большинство команд выполняются сразу после их ввода, большинство вещей, которые вы делаете с ней, будут вызывать внешние программы, а не встроенные функции и т. Д.
Но, как мы знаем, также возможно писать сценарии с использованием bash, а у bash есть много функций, в частности конструкций управления потоком, которые в основном используются в скриптах (хотя они также могут использоваться в командной строке) ,
Другое отличие между bash и многими языками сценариев заключается в том, что скрипт bash считывается, анализируется и выполняется в порядке. Синтаксическая ошибка в середине скрипта bash не будет обнаружена до тех пор, пока выполнение не достигнет ее. Сценарий Perl или Python, напротив, анализируется полностью до начала выполнения. (Такие вещи, как eval
, могут изменить это, но общая идея верна.) Это существенное различие, но оно не указывает на резкую разделительную линию. Если что-то делает Perl и Python более похожими на скомпилированные языки.
Итог: Да, bash - это интерпретируемый язык. Или, может быть, более точно, bash является интерпретатором для интерпретируемого языка.(Имя «bash» обычно ссылается на интерпретатор оболочки или интерпретатор, а не на язык, который он интерпретирует.) Он имеет некоторые существенные отличия от других интерпретируемых языков, которые были разработаны с самого начала для сценариев, но этих различий недостаточно для удаления это из категории «интерпретируемых языков».
Просто уточнить - ваш вопрос был вызван, потому что вы не уверены, что определенную страницу в Википедии можно полагаться на 100% полной и правильной? –
Это похоже на вопрос, который вызывает аргументы, когда все согласны с тем, что происходит на самом деле, но у всех есть сильные и противоречивые мнения о том, как определить терминологию. Я бы просто попытался избежать этой темы. – user2357112
@GregHewgill Обновленный вопрос для уточнения. –