bash脚本能否区分被称为脚本和作为“源”运行?

vy3*_*y32 3 bash

我有一个bash脚本,里面有:

exit 1
Run Code Online (Sandbox Code Playgroud)

当我“获取”该脚本而不是运行它时,它将导致调用者退出。

脚本有没有办法确定它是使用“源”而不是脚本运行的?

anu*_*ava 6

您可以在脚本中使用此检查:

[[ $0 = $BASH_SOURCE ]] && echo "normal run" || echo "sourced run"
Run Code Online (Sandbox Code Playgroud)

或使用if/else/fi您要呼叫的任何地方exit

if [[ $0 = $BASH_SOURCE ]]; then
   exit 1
else
   # don't call exit
   echo "some error..."
fi
Run Code Online (Sandbox Code Playgroud)