cron을 통해 bash 함수에 캡슐화된 Python 스크립트 실행

cron을 통해 bash 함수에 캡슐화된 Python 스크립트 실행

bash 함수로 래핑하는 Python 스크립트가 있습니다. 이 함수를 cron 작업으로 호출하고 싶지만 cron에서 이를 실행할 수 없는 것 같습니다.
기능은 다음과 같습니다:

 #!/bin/bash

getmail(){
    local interp=/path/python3
    local cmd=/path/python-script
    local logfile=/path/logfile

    if [ "$1" == "-logs" ]; then 
        $interp $cmd >> $logfile

    else 
        $interp $cmd
     fi
 }

그런 다음 함수를 가져오고 실행하는 스크립트를 만들었고 cron에서 함수를 호출할 수 있기를 원했습니다.

 #!/bin/bash

  source /path/getmail
  getmail

이 cron 스크립트를 실행 가능하게 만들기 위해 적절한 권한을 할당했지만 cron은 스크립트를 실행하지 않습니다. cron을 통해 Python 스크립트 자체를 실행할 수 있지만 bash 함수로 래핑되지는 않습니다. 나는 단지 이유를 알고 싶습니다. 이것이 cron이 사용하는 인터프리터와 관련이 있을 수 있습니까? cron 탭에 SHELL=/bin/bash를 설정했습니다. 누군가 나에게 이것을 설명해 줄 수 있습니까?

답변1

작동하지 않는다고 어떻게 확신하나요?
사실, 당신이 하는 일은 거의 효과가 있을 것입니다.
두 가지만 언급하면 ​​됩니다.
1. 함수가 포함된 파일의 '#!/bin/bash/'는 필요하지 않으며 파일이 소스로 제공되므로 기능이 없습니다.
2. "-logs" 인수는 인수 없이 (스크립트에서) 함수를 호출하기 때문에 "getmail()" 함수에 절대 포함되지 않습니다.
Bash 스크립트를 다음과 같이 수정하고 다시 시도하십시오.

#!/bin/bash

source /path/getmail
getmail $@

이는 bash 스크립트에 제공된 모든 인수를 함수로 "전달"해야 합니다.

관련 정보