2

コマンド置換を使用して呼び出された関数からスクリプトを終了することは可能ですか?

例えば

#/bin/bash
function do_and_check()
{
    ls $1 || exit
}

p=$(do_and_check /etc/passwd)
q=$(do_and_check /xxx)

これを実行した結果は

bash -x yyy                                                                                                             
++ do_and_check /etc/passwd                                                                                                                  
++ ls /etc/passwd                                                                                                                             
+ p=/etc/passwd
++ do_and_check /xxx
++ ls /xxx
ls: cannot access /xxx: No such file or directory
++ exit
+ q=
+ echo /etc/passwd
/etc/passwd

コマンド置換からではなく、スクリプトから抜け出す出口があればよかったのにと思います。それは可能ですか?

4

1 に答える 1

3

これ:

p=$(do_and_check /etc/passwd)

サブシェルを実行していて、そこから終了しています。関数の終了値を(ゼロ以外の値に)設定し$?、コマンド置換後の戻り値を確認します。

于 2013-01-03T09:42:38.013 に答える