나는 5개의 테스트를 실행하고(각 테스트 전에 잠시 대기) 모든 테스트가 실패하면 작업을 수행하는 작은 korn 쉘 스크립트를 작성하고 싶습니다.
나는 비슷한 일을 생각하고 있습니다 :
for i in {1..5}
do
"doMyTest" #it fills a variables "status" (but can unfortunately fails)
if [ "$status" ]; then #if status is filled then we can leave the loop
break
fi
sleep 3 #else wait some time before doing another try
done
if [ -z "$status" ]; then
exit 1
fi
... then the rest of my program
내가 어떻게 하면 더 나은 방법으로 할 수 있는지 아시나요? 좀 중복되는 것 같군요...
답변1
set --
while [ "$(($#>5))" -eq "-${#status}" ]
do "test"; ${status:+":"} sleep 3
set '' "$@"
done
보완적으로 테스트하면 단일 테스트로 더 많은 작업을 수행할 수 있는 경우가 많습니다.
답변2
$status
다음을 수행하면 이중 확인을 피할 수 있습니다.
for i in {1..5}
do
"doMyTest" #it fills a variables "status" (but can unfortunately fails)
if [ -n "$status" ]; then #if status is filled then we can leave the loop
break
elif [ $i -eq 5 ]; then
exit 1 #all the tests failed, exiting
fi
sleep 3 #else wait some time before doing another try
done
답변3
내 대답: 모든 테스트가 실패할 때만 실패를 확인하려면 어떻게 해야 합니까? 하나의 테스트가 성공하면 다른 테스트를 건너뛸 수 있습니다.
test1 || sleep 3 && \
test2 || sleep 3 && \
test3 || sleep 3 && \
test4 || sleep 3 && \
test5 || exit 1