python - 如何在没有 $0 的情况下获取 shellscript 文件名?

标签 python bash shell

我尝试在 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/

相关文章:

python - Matplotlib,控制 mark_inset() 属性(kwargs)

python - django excel xlwt

linux - 如何按大小降序查找并显示包含 file1 的所有目录和子目录?

linux - 如何使用case语句调用函数?

linux - 如何列出目录shell脚本中的文件

python - 在技​​术上是否可以以编程方式截取网站的屏幕截图?

python - RBF 层 - 理解困难

bash - 在 bash 中调用自定义函数导致 "Command not found"

bash - 在bash中生成脚本并保存到需要sudo的位置

linux - 在 linux 命令行中使用 find 和 grep 来搜索具有特定用户和文本内容的文件?