2

I noticed this type of command argument in a bash script:

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

I am wondering what ${....} means?

How is it used?

Also, is there a good source out there that discusses all the different variations of argument commands for bash?

2

1 Answer 1

1

What you seeing here is parameter expansion, which can be thought of as a set of methods used by bash as shortcuts to evaluating variables (aka parameters). In this specific case we are dealing with the following structure:

${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.

( taken from man bash )

In short, if a variable is unset or doesn't exist, throw an error, like so:

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

If variable is set, do nothing

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

In your specific case , debug parameter is to be passed to node , and if it's not set, show the user what values should it be set to, namely --nocrankshaft --nolazy --nodead_code_elimination --debug-brk=15454

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .