이것은 나의 첫 번째 쉘 스크립트이므로 여러분에게는 이것이 더 멍청한 질문이라고 생각합니다.
문제 개요 내 필요는 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을 업데이트할 계획이 아니면 작동하지 않습니다.