我尝试在shellscript上使用python practice 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
来执行?
答案 0 :(得分:7)
您可以使用变量$BASH_SOURCE
来获取当前脚本文件的名称。
if [[ "$0" == "$BASH_SOURCE" ]]
then
: "Execute only if started from current script"
else
: "Execute when included in another script"
fi