Argumentos do comando Bash $ {…}

2

Eu notei esse tipo de argumento de comando em um script bash:

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

Eu estou querendo saber o que significa ${....} ?

Como é usado?

Além disso, existe uma boa fonte lá fora que discute todas as diferentes variações de comandos de argumento para o bash?

    
por E.S. 30.10.2015 / 23:09

1 resposta

1

O que você vê aqui é a expansão de parâmetros , que pode ser vista como um conjunto de métodos usados pelo bash como atalhos para avaliar variáveis (também conhecidos como parâmetros). Neste caso específico, estamos lidando com a seguinte estrutura:

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

(tirada de homem bash )

Em resumo, se uma variável não estiver definida ou não existir, envie um erro assim:

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

Se a variável estiver definida, não faça nada

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

No seu caso específico, o parâmetro debug deve ser passado para node e, se não estiver definido, mostre ao usuário para quais valores ele deve ser definido, ou seja, --nocrankshaft --nolazy --nodead_code_elimination --debug-brk=15454

    
por Sergiy Kolodyazhnyy 31.10.2015 / 17:17