60초마다 파일을 찾고 싶습니다. 해당 기간 내에 파일이 존재하는 경우 이메일이 트리거되어야 합니다. 아래에서 시도했지만 작동하지 않습니다. 당신의 도움을 주셔서 감사합니다! 미리 감사드립니다
#!/bin/sh
cd /my/path
while true
do
set Hrs = `date "+H"`
if [ $Hrs >= 17 ] && [$Hrs <=23 ]; then
$filefound = `ls tt.txt`
if [ $filefound = "tt.txt" ]; then
mailx send email......
fi
fi
sleep 5
done
답변1
아래 코드를 시도해 보세요.
#!/bin/sh
cd /my/path
while true; do
Hrs=`date "+%H"`
if [ "$Hrs" -ge 17 ] && [ "$Hrs" -le 23 ]; then
if [ -f tt.txt ]; then
echo "File Found" | mail -s "This is the subject" <email address>
fi
fi
sleep 60
done
메일 부분을 제외한 전체 스크립트를 테스트했습니다. 다른 건 다 괜찮고 메일도 괜찮았으면 좋겠습니다. 건배.
답변2
파일이 존재하는지, 실제 파일인지, 읽을 수 있는지 등을 확인하기 위한 정확한 테스트(모든 쉘)가 있습니다. ls 사용은 피해야 합니다.
.. 파일이 존재하지 않을 때마다 오류 메시지를 보냅니다.
..매번 외부 프로세스를 실행합니다.
..이것은 또한 디렉토리, 명명된 파이프, 장치 등을 감지합니다.
이메일을 보내는 경우 찾은 파일 이름을 포함할 수도 있습니다.
파일 이름을 쉘 변수로 한 번 선언하는 것이 가장 좋습니다. 변경하지 않고 다른 파일에서 사용할 수 있도록 스크립트에 매개변수로 전달하는 것이 좋습니다.
수면 5는 수면 60과 다릅니다.