要么我在这里问的是非常非正统的/非常规的/冒险的,要么我的 Google-fu 技能不符合要求...
在bash
shell 脚本中,是否有任何简单的方法可以判断它是由另一个 shell 脚本获取的,还是由它自己运行的?换句话说,是否可以区分以下两种行为?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Run Code Online (Sandbox Code Playgroud)
我正在考虑做的是创建一个类似于实用程序的 shell 脚本,其中包含bash
可以在获取时可用的函数。但是,当这个脚本自己运行时,我也喜欢它根据定义的函数执行某些操作。这个shell脚本是否有某种环境变量可以选择,例如
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
Run Code Online (Sandbox Code Playgroud)
最好,我正在寻找一种不需要调用者脚本设置任何标志变量的解决方案。
编辑:我知道采购和运行脚本之间的区别,我想在这里找出是否可以分辨正在使用的脚本的区别(两种方式)。
我终于理解/发现了为什么我从来没有正确使用bash
's(以及zsh
's)大括号扩展范围:语法{1..10}
代替了我假设的省略号,即{1...10}
.
我可以知道为什么选择两个点而不是三个点吗?如(维基百科)链接所示,省略号在计算机编程中的使用很常见并且很好理解,这就是为什么这激起了我的好奇心。