Qual é o significado de a = '' no script bash?

3

Alguém pode me dizer qual é o significado de a='' em um script bash?

Por exemplo:

 #!/bin/bash

    a=''
    case $@ in
    testfile)
             for list in $(cat $1);do

useradd -s /bin/false $list
         done
         ;;
$a)
         echo "empty"
         ;;
*)
         echo "wrong character"
         ;;
esac

Obrigado

    
por qwerty1805 02.02.2018 / 23:36

1 resposta

6

Esta é uma atribuição de variável. Nesse caso, a é sua variável e você está configurando-a para um valor nulo; '' será avaliado em nada.

Como ilkkachu aponta:

Usar a='' não é efetivamente diferente de usar a="" ou a=

Como Cas aponta:

Setting the variable to a null value (or any initial/default value) also ensures you're not going to use whatever value it might have if it happens to be an environment variable (e.g. exported in the parent shell). This can be problem if, e.g., your script assumes that the variable is empty/undefined unless the script itself defines it, and takes different actions based on that.

script.sh

#!/bin/bash

if [[ $1 == null ]]; then
    a=
elif [[ $1 == unset ]]; then
    unset a
fi

echo "${a:-test}"

Em ação:

$ export a=value
$ ./script.sh null
test
$ ./script.sh unset
test
$ ./script.sh
value
$ echo $a
value

Em muitos casos, definir a variável como um valor nulo é o mesmo que desabilitar a variável: unset a

No entanto, existem ressalvas

pelo menos um

    
por 02.02.2018 / 23:39