때때로 성공하는 조타 명령이 있습니다.
달리기:
cmd1 || cmd1
첫 번째 실행이 실패하면 두 번 실행됩니다. 성공할 때까지 cmd1을 계속 실행하고 각 실행 사이에 절전 모드를 유지하려면 어떻게 해야 합니까? 감사해요.
답변1
until
당신을 위해 이 일을 해줄 것입니다:
until cmd1; do sleep 1; done
이는 cmd1
성공할 때까지 실행되며 각 실행 사이에 1초를 기다립니다.
영원히 실행되지 않으려면 최대 반복 횟수를 추가할 수 있습니다.
max=5; until cmd1 || [[ "$max" -le 0 ]]; do sleep 1; ((--max)); done
성공 하면 cmd1
전체 표현식이 성공하고 $?
0이 됩니다. 성공적으로 실행되지 않고 루프가 cmd1
종료되면 전체 표현식이 실패하고 $?
0이 아닙니다. 이를 사용하여 수행할 작업을 결정할 수 있습니다.
max=5
if until cmd1 || [[ "$max" -le 0 ]]; do sleep 1; ((--max)); done; then
echo Succeeded
else
echo Failed
fi
또는 더 구체적으로 말하자면,
max=5
until cmd1 || [[ "$max" -le 0 ]]; do sleep 1; ((--max)); done
if [ "$?" = 0 ]; then
echo Succeeded
else
echo Failed
fi