Cron 작업*이 현재 디렉터리의 파일 이름으로 대체되었습니다.

Cron 작업*이 현재 디렉터리의 파일 이름으로 대체되었습니다.

이것은 나의 첫 번째 쉘 스크립트이므로 여러분에게는 이것이 더 멍청한 질문이라고 생각합니다.

문제 개요 내 필요는 Node.js 서버를 설치하는 쉘 명령을 작성하는 것입니다.

  • 서버에는 종속성으로 설치된 크론 3개가 필요합니다. 우리는 3가지 환경을 제공합니다.

질문 따라서 cron(string)을 변수에 할당하려고 하면 문자열의 모든 별표가 현재 작업 디렉터리의 파일 이름으로 대체됩니다.

VAR1="*/1       *       *       *       *      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1"

이제 echo $VAR1이 작업을 수행하면 출력은 다음과 같습니다.

*/3 file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh /usr/bin/wget -O /var/tmp/output-folder-here https://my.server.com:12000/cron/push >> /dev/null 2>&1

ls이 디렉터리의 명령 출력은 다음과 같습니다.

file1.txt  file2.txt  generated.txt  sample.sh

답변1

* 앞에 백스페이스를 넣어야 와일드카드 역할을 하지 않습니다.

VAR1="\*/1       \*       \*       \*       \*      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1"

편집하다

내가 틀렸어. 위에 게시한 작업을 수행하면 *가 이스케이프되지 않습니다. 대신 작은따옴표를 사용하세요.

VAR1='*/1       *       *       *       *      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1'

또한 작은따옴표를 사용하지 않으려면 인쇄할 때 변수를 인용하면 됩니다.

echo "$VAR1"

그런데 쉘 스크립트에 cron 명령을 포함시킬 생각은 없습니다. 이것은 나에게 좋은 습관처럼 보이지 않으며 스크립트를 사용하여 crontab을 업데이트할 계획이 아니면 작동하지 않습니다.

관련 정보