O que significa $ {file? my.file.txt} e $ {file:? my.file.txt} em Bash?

0

Quando li alguns tutoriais hoje, recebi as instruções como ${file?my.file.txt} e ${file:?my.file.txt} , o que ${file?my.file.txt} e ${file:?my.file.txt} significam no script Bash?

    
por user3872279 05.10.2014 / 17:20

1 resposta

3

No manual - e é sempre bom verificar se primeiro:

${parameter:?word}

If parameter is null or unset, the expansion 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 parameter is substituted.

Portanto, é uma proteção contra variáveis não definidas, onde você pode mostrar um erro. Além disso,

Omitting the colon results in a test only for a parameter that is unset. Put another way, if the colon is included, the operator tests for both parameter’s existence and that its value is not null; if the colon is omitted, the operator tests only for existence.

Mas, é claro, os exemplos que você deu são um tanto arbitrários e eu me pergunto por que o tutorial os incluiria, quanto mais incluí-los, mas sem explicar o que eles fazem.

    
por 05.10.2014 / 17:31

Tags