"echo"는 crontab의 옵션을 인쇄합니다.

"echo"는 crontab의 옵션을 인쇄합니다.

저는 Pi 모델 B에서 Rasbian 3.12.26+를 실행하고 있습니다.

내 cron 항목은 다음과 같습니다.

* * * * * sleep 11; { echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log

내 로그는 다음과 같습니다.

-en \e[1;4;33m
Thu Sep  4 14:29:13 UTC 2014
-en \e[0m
This is output from curl!

그러나 bash에 명령을 붙여 넣으면 의도한 대로 작동합니다.

{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log

그리고 출력은

Thu Sep  4 14:27:51 UTC 2014
This is output from curl!

첫 번째 줄에는 밑줄이 그어져 있고 의도한 대로 굵은 노란색입니다.

어떤 이유로 crontab에 의해 실행될 때 echo는 인수로 사용하는 대신 "-en"을 인쇄합니다. 결과적으로 색상 이스케이프 시퀀스가 ​​이스케이프되지 않습니다.

무엇을 제공합니까?

답변1

아마도 cron이 /bin/sh를 사용하는 것 같습니다. 다음의 출력을 비교하여 직접 확인하십시오.

/bin/sh -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

위의 내용은 당신이 얻는 출력을 생성합니다

/bin/bash -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

bash에서 동일한 명령이 원하는 출력을 생성하는 반면

관련 정보