O que esta linha no bash faz? Parameter - || scriptname

4

Eu tenho lido na página bash man e lendo os scripts no meu sistema (CentOS 6.7), procurando coisas na página bash man. É um ótimo exercício; Eu aprendi, por exemplo, como /etc/profile verifica se a opção -i está definida quando realmente não há opções nos parâmetros posicionais (portanto, getopts não funcionaria).

No entanto, a linha a seguir me deixou totalmente perplexa; Não consigo encontrar nada na página bash man que explique o que poderia estar fazendo:

LESSOPEN="${LESSOPEN-||/usr/bin/lesspipe.sh %s}"

(Esta é uma parte de uma linha em /etc/profile.d/less.sh .)

Estou apenas sentindo falta de algo em man bash ?

Sim, eu estava faltando algo em man bash : acima da explicação para ${parameter:-word} , ele diz Omitting the colon results in a test only for a parameter that is unset. Essa foi a peça que faltava. (E não é coberto na pergunta "possível duplicado", a propósito.)

O fato de o valor padrão ser atribuído era o nome de um script depois de um operador "ou" ser adicionado à minha confusão! :)

    
por Wildcard 16.10.2015 / 14:26

1 resposta

7

Isso não é bash específico, mas existe na Bourne Shell desde 1976.

Verifique a página do manual do Bourne Shell:

link

Verifique a seção Substituição de parâmetros começando na página 7.

${parameter-word}        Use Default Values. If parameter is unset,
                         the  expansion  of  word is substituted;
                         otherwise,  the  value of parameter is substituted.

Para uma visão geral completa, há:

                     | parameter nonnull | parameter null  | parameter unset
  ___________________|___________________|_________________|________________
  ${parameter:-word} | subst. parameter  | subst. word     | subst. word
  ___________________|___________________|_________________|________________
  ${parameter-word}  | subst. parameter  | subst. null     | subst. word
  ___________________|___________________|_________________|________________
  ${parameter:=word} | subst. parameter  | assign word     | assign word
  ___________________|___________________|_________________|________________
  ${parameter=word}  | subst. parameter  | subst. null     | assign word
  ___________________|___________________|_________________|________________
  ${parameter:?word} | subst. parameter  | error, exit     | error, exit
  ___________________|___________________|_________________|________________
  ${parameter?word}  | subst. parameter  | subst. null     | error, exit
  ___________________|___________________|_________________|________________
  ${parameter:+word} | subst. word       | subst. null     | subst. null
  ___________________|___________________|_________________|________________
  ${parameter+word}  | subst. word       | subst. word     | subst. null
  ___________________|___________________|_________________|________________
    
por 16.10.2015 / 14:32