Bashスクリプトがスクリプト自体に入るのを防ぎます

Bashスクリプトがスクリプト自体に入るのを防ぎます

Bashスクリプトの上部には次の内容があります。

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

問題は、環境変数を取得したときに環境変数が設定されていないときに端末ウィンドウが閉じられることです。

私がこうすれば:

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

bash関数内でなければ、返すことができないというエラー/警告が表示されます。

それで、あなたは何をするつもりですか?私が考えることができる唯一のことは、スクリプト全体をifステートメントでラップすることです。

ベストアンサー1

これは私が見た行動ではありませんbash。私のバージョン(4.4.12)にも文書化されていません。

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

マニュアルページではreturn動詞について説明します。

return [n]- [...]return関数の外部で使用されますが、 .source)コマンドでスクリプトを実行している間、シェルはスクリプトの実行を停止し、次のようにnスクリプト内で実行された最後のコマンドの終了ステータスを返します。 。

おすすめ記事