我在 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