se a variável env existir, saia do script

1
#!/bin/bash   
if  [[ -n "$MYVAR" ]]; then exit; fi
# otherwise the rest of the script continues...

Estou tentando sair de um script de shell se uma determinada variável ENV for 0. O script acima parece não funcionar (eu também tentei usar return em vez de exit .

Alguém pode explicar como isso seria feito ou o que há de errado com a linha acima?

Quando eu digito isso no meu terminal (substituindo a saída por echo "YES" , tudo funciona bem.

    
por d-_-b 29.12.2013 / 05:11

2 respostas

2

Em relação ao teste se uma "variável é 0", pode-se usar:

if [ "$MYVAR" -eq 0 ] ; then exit ; fi

Ou, se preferir:

if [[ $MYVAR -eq 0 ]] ; then exit ; fi

A expressão [[ -n "$MYVAR" ]] testa um valor de cadeia não vazio de MYVAR. A string "0" não é vazia: ela tem um caractere, o mesmo que a string "1".

exit fará com que o script seja encerrado. return , por contraste, é usado em funções ou scripts originados quando você deseja sair da função ou do script de origem, mas continua com a execução do script de chamada. Executar exit em uma função faria com que a função e seu script de chamada fossem encerrados.

    
por 29.12.2013 / 05:21
1
[[ "$1" -eq 0 ]] && { echo "Parameter 1 is empty" ; exit 1; }
    
por 27.03.2015 / 18:05