我尝试在 shellscript 上使用 python 练习 if __name__ == "__main__":
。
示例脚本如下:
a.sh:
#!/bin/bash
filename="a.sh"
function main() {
echo "start from $0"
echo "a.sh is called"
source b.sh
bfunc
}
[[ "$0" == "${filename}" ]] && main
b.sh:
#!/bin/bash
filename="b.sh"
function main() {
echo "start from $0"
echo "b.sh is called"
}
function bfunc() {
echo "hello bfunc"
}
[[ "$0" == "${filename}" ]] && main
您可以使用 bash a.sh
调用它。
如果您调用 bash a.sh
,您将得到如下所示:
start from a.sh
a.sh is called
hello bfunc
这是我的问题。
如何在不使用 $0
的情况下获取文件名本身?
我不想直接写文件名,即我想将文件名值传递给${filename}
。
不知道的看链接就是上面的python做法:What does if __name__ == "__main__": do?
如何检查 b.sh
是从命令行启动还是通过从 a.sh
包含执行?
最佳答案
您可以使用变量$BASH_SOURCE
来获取当前脚本文件的名称。
if [[ "$0" == "$BASH_SOURCE" ]]
then
: "Execute only if started from current script"
else
: "Execute when included in another script"
fi
关于python - 如何在没有 $0 的情况下获取 shellscript 文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48516449/