Получение bash, чтобы игнорировать ключевые слова bash в скрипте - PullRequest
1 голос
/ 02 июня 2011

У меня есть скрипт в bash, который использует HTK toolkit.Один из файлов, который использует инструмент HTK, называется do и находится в каталоге с именем hmm_1/.Теперь, когда мне нужно вызвать определенный инструмент из набора инструментов HTK, я делаю это так:

some HTK command -H hmm_1/do -H hmm_1/<something else> и так далее.Я только что заметил, что gvim выделяет do имя файла в приведенной выше команде, думая, что это ключевое слово.Тем не менее, это имя файла.Мой вопрос:

  1. Будет ли bash интерпретировать его как ключевое слово или bash знает лучше (это всего лишь причуда gvim).
  2. Как я могу заставить bash «знать», что некоторые имена переменных, хотя и безобидно именуются как ключевые слова, не являются таковыми, а являются именами файлов?

Примечание: я не могу сейчас изменить имя файла.Мне придется пройти через большое количество шагов.

Я просто не знаю, как сформулировать этот вопрос.Помощь в редактировании строки вопроса приветствуется.

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Как часть пути, ключевые слова будут игнорироваться. Они будут интерпретироваться как ключевое слово только в начале команды. Лучше всего просто считать выделение gvim незначительным раздражением и игнорировать его.

1 голос
/ 02 июня 2011

Помимо использования команды как части явного пути (как предложил Эрнест и того, что будет в вашем случае), вы также можете использовать встроенную команду command для поиска команд, которые находятся в некотором каталоге в $PATHпеременная, игнорирующая псевдонимы, функции оболочки и ключевые слова оболочки:

$ echo '#!/bin/bash
> echo Hello World!' > ~/bin/do

$ chmod u+x ~/bin/do

~/bin находится у меня на пути, поэтому обычно это будет работать:

$ do
bash: Syntaxfehler beim unerwarteten Wort `do'

Это не так, посколькузарезервированное словоПрефикс с command помогает:

$ command do
Hello World!

Как и при использовании полного пути:

$ ~/bin/do
Hello World!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...