Diferença entre: e: = com variáveis em arquivos bash

1

me deparei com um arquivo bash que tem algo parecido com isto

MYVAR := SomeVal

Eu sei que depois de ler alguns tutoriais você define valores como tal

MYVAR = SomeVal

Qual é a diferença entre os dois acima?

    
por MistyD 19.03.2015 / 22:00

1 resposta

3

Você provavelmente viu uma expansão de parâmetro para definir um valor padrão .

A diferença é se a variável não está definida ou está configurada com um valor nulo:

  1. quando a variável não está definida, não há diferença

    $ unset MYVAR; : ${MYVAR:=SomeVal}; echo "$MYVAR"
    SomeVal
    $ unset MYVAR; : ${MYVAR=SomeVal}; echo "$MYVAR"
    SomeVal
    
  2. quando a variável tem um valor, não há diferença

    $ MYVAR="foo"; : ${MYVAR:=SomeVal}; echo "$MYVAR"
    foo
    $ MYVAR="foo"; : ${MYVAR=SomeVal}; echo "$MYVAR"
    foo
    
  3. quando a variável tem valor nulo:

    $ MYVAR=""; : ${MYVAR:=SomeVal}; echo "$MYVAR"
    SomeVal
    $ MYVAR=""; : ${MYVAR=SomeVal}; echo "$MYVAR"
    # empty line
    
por 19.03.2015 / 22:19

Tags