O que significa ': -' significa em um script de shell [duplicado]

21

Eu vi isso no final de um script de shell incrível, mas não consigo entender o login aqui porque acho que está sendo curto para um comando mais longo.

spark ${@:-'cat'}

Isso aparece no final do script . Alguma idéia?

+ Marcas para alguém que o estende em um segmento completo de código, mesmo que seja mais lento (melhor para explicação)

    
por whoami 31.01.2012 / 12:34

2 respostas

24

Este é o primeiro caso especial de substituição de parâmetros em man bash :

${parameter:-word}
Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.

No caso que você mencionou, o usuário forneceu argumentos na linha de comando e eles serão usados, ou o usuário é solicitado a inseri-los na entrada padrão posteriormente.

    
por 31.01.2012 / 12:58
4

Afaik :- é basicamente: use $@ OR 'cat' (sem definir $@ para 'cat' ) ...

de modo que alguma variável substitua thingy ...

Edit: Então, você recebe algum tipo de entrada interativa ...

Aqui está um pequeno teste de terminal:

localhost:~ _druu$ echo ${@:-'cat'}
hello
world
;)
^\hello world ;)
localhost:~ _druu$ 
    
por 31.01.2012 / 12:46