【发布时间】:2015-04-30 11:24:46
【问题描述】:
在 Bash 中,我希望能够获取脚本并执行文件。 Bash 相当于 Python 的 if __name__ == '__main__' 是什么?
我没有在 Stackoverflow 上找到关于该主题的现成问题/解决方案(我怀疑我的提问方式与现有问题/答案不匹配,但这是我能想到的最明显的方式根据我的 Python 经验来表达这个问题)。
附言关于possible duplicate question(如果我有更多时间,我会写一个更短的回复):
linked to question 询问“如何检测是否正在获取脚本”,但该问题询问“如何创建既可以作为脚本获取又可以作为脚本运行的 bash 脚本?”。这个问题的答案可能会用到上一个问题的某些方面,但有如下额外的要求/问题:
- 一旦您检测到正在获取脚本,不运行脚本的最佳方法是什么(并避免意外的side-effects(除了导入感兴趣的函数),例如添加/删除/修改环境/变量)李>
- 一旦您检测到脚本正在运行而不是源代码,实现脚本的规范方式是什么(将其放在函数中?或者只是将其放在 if 语句之后?如果您将它放在 if 语句之后有副作用吗?
- 我在 Bash 上找到的大多数 google 搜索都没有涵盖这个主题(一个可以获取和执行的 bash 脚本)什么是实现这个的规范方法?是否因为不鼓励或不好做而没有涵盖该主题?有问题吗?
【问题讨论】:
-
不精通 Python,我不明白你的问题。 :) 您是否希望能够检测脚本是显式运行,还是通过使用
source或点运算符包含在另一个脚本中? -
@ghoti 例如,我有一个脚本
script1.sh和一个函数xyz(),我想在另一个脚本script2.sh中使用它。当我从 script2 获取 script1 时,script1 以某种方式退出,阻止我在 script2 中调用xyz()。 (我提到的python位的一个很好的解释是here)
标签: bash