변수 삽입 및 변수 유지

변수 삽입 및 변수 유지

저는 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가 실행될 때 확장되고 이후에 명령 대체가 발생하게 됩니다. 당신이 원하는 것은 그 문자열을 전달하는 것입니다문자열로파일에. 대체가 발생하지 않도록 방지하는 방법에는 두 가지가 있습니다.

  1. 달러 기호를 피할 수 있습니다.

     /bin/echo "0 0 * * 1-5 ../..backup-\$(date +%Y-%m-%d).log"
    
  2. 큰따옴표 대신 작은따옴표를 사용하여 문자열을 묶을 수 있습니다.

    /bin/echo '0 0 * * 1-5 ../..backup-$(date +%Y-%m-%d).log'
    

어느 쪽이든 모든 셸에서 이 명령문을 테스트하고 리터럴 문자열을 제공하는지 또는 대체 명령을 실행하는지 확인할 수 있습니다.

관련 정보