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

时间:2018-01-30 07:52:50

标签: python bash shell

我尝试在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来执行?

1 个答案:

答案 0 :(得分:7)

您可以使用变量$BASH_SOURCE来获取当前脚本文件的名称。

if [[ "$0" == "$BASH_SOURCE" ]]
then
    : "Execute only if started from current script"
else
    : "Execute when included in another script"
fi