あらかじめごめんなさい。私はシェルスクリプトを書くのに苦手です。
以下のbash機能があります。
tagDownload() {
mp3 "$@" | /home/username/bin/tag.py
}
その中には、mp3
Pythonスクリプトで使用されるいくつかの出力を生成する別のbash関数があります。関数は、端末が開かれるたびにインポートされるドットファイルに保存されます。
私が期待する(そして望む)ことは、tagDownload
コンポーネントが呼び出されたときにのみ呼び出されることです。実際に起こるのは、新しい端末が開かれたときにこの定義を含むドットファイルをインポートすると、Pythonスクリプトが呼び出されることです。
2つの質問があります。
tagDownload
親ファイルをインポートするときにPythonプログラムが呼び出されないようにどのように設定する必要がありますか?- bashは呼び出しかステートメントかを決定するためにどのようなルールを使用しますか?私は以前この問題を経験しており、今後はこの問題が発生しないことを願っています。
私の考えが間違っていたら訂正してください。
ベストアンサー1
質問コメントで説明したように、関数がシェルで定義されている場合、関数を定義しても関数は呼び出されません。
ユーザーは後で実際に他の場所で関数を呼び出しており、これがPythonスクリプトを実行することに気づきました。