我试着if __name__ == "__main__":在shellscript上使用python练习.
示例脚本如下:
灰:
#!/bin/bash
filename="a.sh"
function main() {
echo "start from $0"
echo "a.sh is called"
source b.sh
bfunc
}
[[ "$0" == "${filename}" ]] && main
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
你可以用它来调用它bash a.sh.
如果你打电话bash a.sh,你会得到以下内容:
start from a.sh
a.sh is called
hello bfunc
Run Code Online (Sandbox Code Playgroud)
这是我的问题.如何在不使用的情况下获取文件名$0?我不想直接写文件名,即我想将文件名值传递给${filename}.
如果您不知道上面的python实践,请参阅链接:如果__name__ =="__ main__":怎么办?
如何检查天气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
Run Code Online (Sandbox Code Playgroud)