Что такое ${command_} в сценарии оболочки

#shell #sh

#оболочка #sh

Вопрос:

Я погуглил и ничего не нашел. Я читаю файл сценария оболочки, и там есть эта строка

 echo "docker run command"
echo ${command_}
  

Что это значит? Пожалуйста, обратите внимание, что

  1. после слова «command» стоит символ подчеркивания
  2. command_ кажется, не определено в другом месте

Комментарии:

1. Какой результат вы видите тогда? после docker run command ? Должно быть что-то напечатано в стандартный вывод

2. ну, я ничего не вижу, указывая, что command_ кажется пустым. Что заставляет меня задуматься, каковы были первоначальные намерения человека, который написал этот сценарий…

3. Может ли это быть ошибкой / опечаткой?

4. Ответ заключается в том, что он просто расширяется до любой пользовательской переменной, которой command_ назначена, поскольку в этом имени или подчеркивании нет ничего особенного. Что касается того, почему кто-то написал это, возможно, в остальной части сценария есть некоторые подсказки. Например, если несколько переменных имеют завершающий знак подчеркивания, это может быть соглашение для локальных переменных скрипта, которое следует за соглашением C для переменных-членов.

Ответ №1:

Что такое ${command_} в сценарии оболочки

${command_} означает расширение переменной с именем command_ до ее значения.

Что это значит?

  • echo "docker run command" — означает выполнение команды echo (возможно, встроенной) с одним аргументом docker run command .
  • echo ${command_} — означает выполнение команды echo (возможно, встроенной), результат расширения переменной command_ будет подвергнут расширению с разделением на слова, а затем результат будет передан в качестве аргументов echo команде.

после слова «command» стоит символ подчеркивания

Это не имеет значения — подчеркивание не является чем-то особенным.

command_, похоже, не определен в другом месте

Это означает, что ${command_} расширение расширится до пустой строки, а второе echo будет выполняться без аргументов.

Ответ №2:

команда echo используется для печати переданных аргументов. Но если аргумент имеет значение $, это означает, что он оценивает его значение и выводит то же самое.

Здесь ваш сценарий оболочки будет иметь переменную с именем «command_». Он просто найдет свое значение, если оно определено, и напечатает его. Если оно не определено, ничего не будет напечатано.