如何获得没有$ 0的shellscript文件名?

tkh*_*khm 7 python bash shell

我试着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

cle*_*ens 7

您可以使用该变量$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)