POSIX e Bash, sh shorthand, para composto se declaração

0

Eu prefiro fazer meus comandos sh em taquigrafia, e eu prefiro estar em POSIX. Na verdade, se o script puder ser executado no Dash, isso é bom o suficiente. O que significa usar o comando de teste [ , não o estendido [[ .

Eu tenho um exemplo de um script de auto-inicialização, sobre o qual não tenho certeza.

if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
   eval 'dbus-launch --sh-syntax --exit-with-session'
fi

Então, meu palpite é que, se dbus-launch e $DBUS_SESSION_BUS_ADDRESS estiver vazio, faça o eval . Como eu escrevo isso em taquigrafia? Agradeço qualquer ajuda sobre este assunto.

    
por J. M. Becker 14.12.2011 / 23:14

1 resposta

4

O snippet que você postou é POSIX-legal e deve ser executado corretamente em dash como está. Eu não entendo o ponto de extinguir if s e substituí-los por one-liners, já que ele não realiza muito além de ocasionalmente tornar o código mais difícil de ler. No entanto, nesse caso, como é apenas uma única linha, você pode simplesmente excluir if , ; then e fi e substituir a ; then por && , ou seja,

which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS" && 
eval 'dbus-launch --sh-syntax --exit-with-session'

deve ser funcionalmente equivalente ao trecho na questão. Além disso, se é isso que você quer dizer com "taquigrafia", não acho que seja um termo universal ou padrão e não economize muitos caracteres de digitação. A conversão de um comando if compound para uma lista seria uma descrição mais precisa.

    
por 15.12.2011 / 01:20