이 스크립트는 30 초 동안 5 초마다 파일의 존재 여부를 확인합니다. 스크립트는 파일이 나타날 때까지 대기합니다. 파일을 찾으면 "정보 : 완료 대기 ".조건문을 사용하여 while 루프에서 오류 메시지를 배치
파일을 찾을 수없는 경우 오류 메시지가 나타난 후 30 초 후에 이 종료됩니다.
스크립트가 구성된 방식으로 이제 각 루프 이후에 오류 시간 초과가 인쇄됩니다.
#!/bin/bash
count=1
while [ $count -le 6 ]
do
if [ ! -e /tmp/2007.txt ]
then
echo "info : sleeping for 5 seconds"
((count++))
sleep 5
elsif [ -e /tmp/2007.txt ]
echo "info: done waiting"
break
fi
echo "error: timeout"
done
이
내가info : sleeping for 5 seconds
error: timeout
info : sleeping for 5 seconds
error: timeout
info : sleeping for 5 seconds
error: timeout
info : sleeping for 5 seconds
error: timeout
info : sleeping for 5 seconds
error: timeout
info : sleeping for 5 seconds
error: timeout
내가 루프 밖으로 배치하면 (나쁜) 무엇을 얻을 -
break
fi
done
echo "error: timeout"
큰이 내가 무엇을 얻을 작동
[email protected] ~ $ /tmp/wait_while
info : sleeping for 5 seconds
info : sleeping for 5 seconds
info : sleeping for 5 seconds
info : sleeping for 5 seconds
info : sleeping for 5 seconds
info : sleeping for 5 seconds
error: timeout
[email protected] ~ $
그러나 내가 /tmp/2007.txt 파일을 터치하면 bu가 중단됩니다. 오류 타임 아웃 여전히
[email protected] ~ $ /tmp/wait_while
info : sleeping for 5 seconds
info : sleeping for 5 seconds
info: done waiting
error: timeout
을 보여줍니다 t에이 쉬운 질문이지만, 내가 이해가 공통의 문제를 반영 조건문과 장소들을 배치하는 방법으로 루프 때문에 지역 사회에 여기 데려입니다 진술. 필자는 스크립팅 작업에서이 부분을 발견했으며이를 이해해야합니다. 진화해야합니다. 내가 찾고있는 스크립트는 30 초 동안 검사하고, 오류 메시지를 표시하지 못하면 아무것도 찾지 않습니다. 스크립트가 파일을 찾으면 오류 메시지를 알려주고 알리지 않기를 원합니다.
:''동안 ((계산 <= 6))''. 또한 bash를 사용한다면''[]''을 사용하지 말아야하며''[[]]''을 선호하십시오. –