![bash 함수에서 python 프로그램을 호출하지 않고 정의할 때 출력을 python 프로그램으로 파이프하려면 어떻게 해야 합니까?](https://linux55.com/image/162874/bash%20%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C%20python%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%84%20%ED%98%B8%EC%B6%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EC%A0%95%EC%9D%98%ED%95%A0%20%EB%95%8C%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20python%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%B4%ED%94%84%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
미리 죄송합니다. 저는 쉘 스크립트 작성에 능숙하지 않습니다.
다음과 같은 bash 기능이 있습니다.
tagDownload() {
mp3 "$@" | /home/username/bin/tag.py
}
그 안에는 mp3
Python 스크립트에서 사용되는 일부 출력을 생성하는 또 다른 bash 함수가 있습니다. 함수는 터미널이 열릴 때마다 가져오는 도트 파일에 저장됩니다.
내가 기대하는(그리고 원하는) 것은 tagDownload
구성 요소가 호출될 때만 호출된다는 것입니다. 실제로 일어나는 일은 새 터미널이 열릴 때 이 정의가 포함된 도트 파일을 가져오면 Python 스크립트가 호출된다는 것입니다.
두 가지 질문이 있습니다.
tagDownload
상위 파일을 가져올 때 Python 프로그램이 호출되지 않도록 어떻게 구성해야 합니까 ?- bash는 호출인지 명령문인지 결정하기 위해 어떤 규칙을 사용합니까? 나는 이전에 이 문제를 겪었으며 앞으로는 이러한 문제가 발생하지 않기를 바랍니다.
내 생각이 틀렸다면 정정해 주세요.
답변1
질문 주석에서 논의한 것처럼, 함수가 셸에 정의되면 함수를 정의해도 함수가 호출되지 않습니다.
사용자는 나중에 실제로 다른 곳에서 함수를 호출하고 있으며 이로 인해 Python 스크립트가 실행된다는 것을 깨달았습니다.