Аргументы команды Bash ${...}

Я заметил этот тип аргумента команды в скрипте bash:

node ${debug?--nocrankshaft --nolazy --nodead_code_elimination --debug-brk=15454} app.js

Мне интересно что ${....} средства?

Как это используется?

Кроме того, есть ли хороший источник, который обсуждает все различные варианты команд аргументов для bash?

1 ответ

Решение

Здесь вы видите расширение параметров, которое можно рассматривать как набор методов, используемых bash в качестве ярлыков для оценки переменных (или параметров). В этом конкретном случае мы имеем дело со следующей структурой:

${parameter:?word}
              Display  Error  if  Null or Unset.  If
              parameter is null or unset, the expan‐
              sion  of  word  (or  a message to that
              effect if  word  is  not  present)  is
              written  to the standard error and the
              shell,  if  it  is  not   interactive,
              exits.  Otherwise, the value of param‐
              eter is substituted.

(взято из человека Баш)

Короче говоря, если переменная не установлена ​​или не существует, выведите ошибку, например, так:

xieerqi:$ echo ${NOTSET?this param not set}          
mksh: NOTSET: this param not set

Если установлена ​​переменная, ничего не делать

xieerqi:$ echo ${PWD?this param not set}             
/home/xieerqi

В вашем конкретном случае, debug параметр должен быть передан node и, если он не установлен, покажите пользователю, какие значения должны быть установлены, а именно --nocrankshaft --nolazy --nodead_code_elimination --debug-brk=15454

Другие вопросы по тегам