왜
$ while true ; do 'date; time find /tmp/test -type f \
-exec cp /dev/null {} \;';sleep 3600; done
작동하지 않고 대신 오류 메시지가 반환됩니다.
-bash: date; time find /tmp/test -type f -exec cp /dev/null {} \;: No such file or directory
탈출을 시도했지만 ;
여전히 {}
같은 오류가 발생합니다. 예, 디렉토리가 있습니다 /tmp/test
.
답변1
인수는 do
단일 명령이며, 추가 명령은 일련의 명령을 사용합니다.
while true ; do date ; find ... ; sleep 3600 ; done
답변2
while true; do
date
time find /tmp/test -type f -exec cp /dev/null {} \;
sleep 3600
done
명령의 작은따옴표로 인해 쉘은 인용된 문자열을 실행할 명령의 이름으로 해석하지만 이를 찾을 수 없으므로 특정 오류가 발생합니다.
매 시간마다 파일을 지우는 또 다른 방법 /tmp/test
은 다음 일정에 따라 cronjob을 사용하는 것입니다.
0 * * * * find /tmp/test -type f -exec cp /dev/null {} \;
답변3
따옴표를 제거하면 예상대로 작동합니다(예, 두 개의 세미콜론이 연속으로 있어야 합니다).