De que adianta usar “x $ START_DAEMON” = “xyes” aqui? (o x principal)

7

Isso fazia parte de um script do daemon do fetchmail,

if [ ! "x$START_DAEMON" = "xyes" -a ! "$1" = "status" ]; then

Qual é o objetivo de usar x$START_DAEMON = "xyes" ; porque não basta usar $START_DAEMON = "yes" ?

    
por daisy 08.10.2012 / 06:17

1 resposta

8

Eu vi casos em que o x$variable não foi citado e, nesse caso, é para lidar com situações em que a variável ( $START_DAEMON neste caso) pode estar vazia. Caso contrário, seu teste seria verificar se ! = "yes" e o teste gerariam erro. No entanto, como você apontou nos comentários, citar duas vezes o x$variable cuida disso.

Por outro lado, uma pergunta sobre ServerFault levou-me a esta página: link , em que se está a impedir que a expansão das variáveis comece com um personagem que pode confundir [ ou test

Mesmo assim, acho que esse é um problema que só pode ser um problema em versões mais antigas ("histórico" como a página de abertura do grupo diz), e que implementações mais recentes fazem a coisa certa sem o x , contanto que o dobro -pases estão envolvidos pelo menos. Por isso, pode ser principalmente uma tradição de codificação. Consegui confirmar um problema usando /bin/sh no SunOS 5.10, embora:

 # a="!"; [ "$a" = "yes" ] && echo ok
 test: argument expected
    
por 08.10.2012 / 06:44

Tags