내 디렉토리에서 트리거 파일을 사용할 수 있는지 확인하기 위해 쉘 스크립트를 작성하고 싶습니다. 사용할 수 없는 경우 코드를 1시간 정도 기다린 후 찾을 때까지 다시 사용 가능한지 확인하도록 하세요. 일단 발견되면 스크립트가 성공적으로 완료되어야 합니다.
트리거 파일 이름에는 상수 부분과 그 뒤에 가변 날짜/시간 부분이 있습니다. 예를 들어 Transfer-20210813061635681177에서 Transfer-는 일정하고 휴식은 매일 변경됩니다.
아래는 내가 시도한 것입니다. Test.ksh 파일에 넣고 유닉스 서버 명령줄에서 ksh Test.ksh를 제공하여 실행을 시도했습니다.
#!/bin/ksh
if [ ! -f /data/source/Transfer-* ] ; then
sleep 3600 # wait 60 minutes
fi
[ -f /data/source/Transfer-* ] && echo 'trigger found' || echo 'trigger not found'
exit 0
다음과 같은 오류가 발생합니다.
Test.ksh: 6행: 6행의 구문 오류: 'if'가 일치하지 않습니다.
내가 여기서 뭘 잘못하고 있는 걸까요? 또는 즉흥적으로 이를 수정하는 방법. 도움을 요청.
답변1
이 예는 스크립트가 작동하는 방식을 보여 주며 일부 형식 문제가 있다는 @steeldriver + @UnixBeginner의 아이디어를 강화합니다. 변경 후 테스트 목적으로 3600초가 3초로 단축되었습니다.
$ cat x2
#!/bin/ksh
if [ ! -f /data/source/Transfer-* ] ; then
sleep 3 # wait 60 minutes
fi
[ -f /data/source/Transfer-* ] && echo 'trigger found' || echo 'trigger not found'
exit 0
$ ./x2
trigger not found
$