シェルスクリプトのifブロックで終了は何をしますか?

シェルスクリプトのifブロックで終了は何をしますか?

Unixシェルスクリプトについて質問があります。

exit 1内部的に実行すると仮定するとif終了しますか、それとも外部で実行されますかif?以下は仮想の例です。

if [ "$PASSWORD" == "$VALID_PASSWORD" ]; then
    if [ "$PASSWORD" -gt 10]; then
        echo "password is too large!"
        exit 1
    fi
    echo "You have access!"
    exit 1
fi

ベストアンサー1

exit呼び出しプロセスを終了します。ほとんどの場合、ループ、関数、または埋め込みスクリプト内で呼び出してもスクリプト全体が終了します。 「キャプチャされた」唯一のシェル構成は、exitサブシェルを導入する構成です。二股に分かれたサブシェルプロセス):

  • (…)サブシェルで括弧内のコマンドを実行するための基本サブシェル構造。
  • コマンドを実行し、その出力を文字列として返すコマンド置換構造$(…)(および廃止された対応する機能であるbacktick)`…`
  • バックグラウンドジョブが分岐しました&
  • 管路 |そしてほとんどのシェルの右側(ATT kshとzshを除く)
  • 一部のシェルには、ksh、bash、zshのプロセス置換など、追加のサブプロセス構造があります<(…)>(…)

whileキーワードを使用してループforを中断しbreakたり、キーワードを使用して関数を中断したりできますreturn

おすすめ記事