2016-02-05 70 views
0

如果啓動一個腳本,其中包含exit語句,您必須將其作爲子進程啓動。防止「點」一個外殼來執行它(退出功能,查殺終端和退出外殼)

如果您啓動它與你的終端會話啓動電流殼內(使用. ./<scriptname>任何退出將關閉主外殼,一個沿着你的終端會話啓動。

die() { 
    echo "ERROR: $*. Aborting." >&2 
    exit 1 
} 

[ -s "$1" ] || die "empty file" 

echo "this should not be reached if $1 is not a nonempty file" 

我知道這種情況我想寫點東西,我防止外殼被以這種方式運行:?

. shell.ksh params 

如果有人要運行它這種方式,應以信息報錯了 如何完成這件事 謝謝

+1

使用'return',而不是'exit'。回答[這裏](http://stackoverflow.com/questions/3666846/how-do-you-return-to-a-sourced-bash-script),我搜索「bash退出源文件」,它是第一個結果 – 123

+0

程序將繼續返回。它會從功能而不是程序中退出,我希望腳本退出:當它「死亡」時再繼續進行 – user1874594

+0

@ 123,...但退出腳本是'die'的意圖的一部分;這裏的問題是它是父shell,而不僅僅是腳本,退出。 –

回答