저는 VMWare를 사용하고 있는데 남들이 뭐라고 하든 대부분의 UNIX 명령에 반응합니다.
그러나 재부팅 후에도 변경되지 않은 파일이 거의 없는 등 일부 사항은 고유합니다. 그래서 변수를 사용하여 로그 파일 이름을 지정하는 스크립트 백업에 문제가 발생했습니다.
수동으로 삽입하면
backup-$(date +%Y-%m-%d).log
cron
, 로그 파일은 물론 시작된 날짜를 따라 이름이 지정됩니다 . 그러나 local.sh
재부팅 시 작업을 다시 시작하기 위해 연결하면 cron
;
/bin/echo "0 0 * * 1-5 ...backup-$(date +%Y-%m-%d).log
물론 다음과 같이 끝날 것입니다.
backup-2014-07-01.log
그렇다면 문제는 cron
날짜가 아닌 변수가 되도록 작성하는 방법입니다.
답변1
문자열의 달러 기호는 echo가 실행될 때 확장되고 이후에 명령 대체가 발생하게 됩니다. 당신이 원하는 것은 그 문자열을 전달하는 것입니다문자열로파일에. 대체가 발생하지 않도록 방지하는 방법에는 두 가지가 있습니다.
달러 기호를 피할 수 있습니다.
/bin/echo "0 0 * * 1-5 ../..backup-\$(date +%Y-%m-%d).log"
큰따옴표 대신 작은따옴표를 사용하여 문자열을 묶을 수 있습니다.
/bin/echo '0 0 * * 1-5 ../..backup-$(date +%Y-%m-%d).log'
어느 쪽이든 모든 셸에서 이 명령문을 테스트하고 리터럴 문자열을 제공하는지 또는 대체 명령을 실행하는지 확인할 수 있습니다.