スクリプトをインポートするときに呼び出しシェルを終了せずにスクリプトの残りの部分をスキップできますか?

スクリプトをインポートするときに呼び出しシェルを終了せずにスクリプトの残りの部分をスキップできますか?

オプションが認識されない場合、または予想されるオプション引数が見つからない場合は、スクリプトexitの残りの部分をスキップするために何かを呼び出すbashスクリプトがあります。getopts

while getopts ":t:" opt; do
    case $opt in
        t)
            timelen="$OPTARG"
            ;;
        \?) printf "illegal option: -%s\n" "$OPTARG" >&2
            echo "$usage" >&2
            exit 1
            ;;
        :) printf "missing argument for -%s\n" "$OPTARG" >&2
           echo "$usage" >&2
           exit 1
           ;;
    esac
done

# reset of the script

sourceスクリプトをbashシェルに入れました。問題が発生すると、シェルは終了します。

exit残りのスクリプトをスキップして呼び出しシェルを終了しない以外に、他の方法はありますか?

置換は関数呼び出しのようには機能exitreturnず、残りのスクリプトが実行されます。

ありがとうございます。

ベストアンサー1

使用return

return bash組み込み機能は、呼び出し(親/ソース)スクリプトを停止せずにソーススクリプトを終了します。

メンズバッシュから:

return [n]
は、関数が実行を停止し、nで指定された値を呼び出し元に返すようにします。 nが省略された場合、返される状態は、関数本文で最後に実行されたコマンドの状態です。 …returnが関数の外部で使用されますが、.(ソース)コマンド内で使用されると、シェルはスクリプトの実行を停止し、nまたはスクリプト内で実行された最後のコマンドの終了ステータスをスクリプトの終了ステータスとして返します。

おすすめ記事