提前道歉,我不擅长编写 shell 脚本。
我有一个 bash 函数,如下所示:
tagDownload() {
mp3 "$@" | /home/username/bin/tag.py
}
其中mp3
是另一个 bash 函数,它生成 python 脚本使用的一些输出。该函数存储在一个点文件中,每当打开终端时都会获取该点文件。
我期望(并且希望)发生的是tagDownload
其组成组件仅在被调用时被调用。实际发生的情况是,当打开新终端时获取包含此定义的点文件时,将调用 python 脚本。
我有两个问题:
- 我应该如何构建
tagDownload
,以便在获取其父文件时,不会调用 python 程序? - bash 使用什么规则来确定某件事是调用还是语句?我以前也遇到过这样的问题,希望以后能避免这样的麻烦。
如果我的想法不正确,请纠正我。
答案1
正如问题评论中所讨论的,在 shell 中定义函数时,定义它的行为不会导致它被调用。
用户后来意识到,他们实际上是从另一个地方调用该函数,这导致 Python 脚本运行。