Bash 命令参数 ${...}

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

相关内容