Evita o fornecimento de um script bash, no próprio script

0

No topo de um script bash, eu tenho isto:

if [[ "$npm_registry_override" != "yes" ]]; then
  echo "refusing to source npm.sh script because env is not set."
  exit 0;
fi

o problema é que, quando eu o forneço e o env var não está definido, minha janela de terminal simplesmente se fecha.

se eu fizer isso:

 if [[ "$npm_registry_override" != "yes" ]]; then
      echo "refusing to source npm.sh script because env is not set."
      return 0;
 fi

Eu recebo um aviso de erro / aviso que não pode retornar a menos que dentro de uma função bash.

Então, o que você deveria fazer? A única coisa em que consigo pensar é envolver todo o meu script na declaração if.

    
por Alexander Mills 15.05.2018 / 00:41

1 resposta

2

Este não é o comportamento que vejo com bash . Nem é o que está documentado na minha versão (4.4.12).

$ cat <<'x' >x.sh
echo "This is x.sh"
return 0
x
$ source x.sh
This is x.sh
$

A página man escreve sobre o verbo return :

return [n] - [...] If return is used outside a function, but during execution of a script by the . (source) command, it causes the shell to stop executing that script and return either n or the exit status of the last command executed within the script as the exit status of the script.

    
por 15.05.2018 / 01:00