![Unix 스크립트의 루프까지 무한 루프](https://linux55.com/image/222032/Unix%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EB%A3%A8%ED%94%84%EA%B9%8C%EC%A7%80%20%EB%AC%B4%ED%95%9C%20%EB%A3%A8%ED%94%84.png)
나는 유닉스 스크립트를 사용하고 있습니다 until loop
. 내 스크립트의 아이디어는 URL 상태가 작동하는지 작동 중지되는지 지속적으로 확인해야 한다는 것입니다. 작동하면 루프를 종료합니다. 내 스크립트에서는 curl
URL 상태와 grep
상태 코드를 확인하는 데 사용할 것입니다 (만 동일합니다 200
. Until 루프가 작동하는 방식을 이해하면 정의한 조건이 충족될 때까지 계속 실행됩니다. 스크립트를 테스트하면 다음과 같이 끝납니다. 무한 루프
입니다. 내 스크립트는 다음과 같습니다.
var=""
until [echo "$var" | grep -q "HTTP/1.1 200 OK"]
do
var=$(curl -I -k https://mystie url | grep "HTTP/1.1 200 OK")
echo $var
done
var=$(curl -I -k https://mystie url | grep "HTTP/1.1 200 OK")
터미널에서 직접 테스트 하면 올바른 결과가 반환됩니다.
답변1
대괄호에는 조건식(단항 또는 이진)만 포함될 수 있으므로 명령의 종료 상태를 조건으로 사용하려면 대괄호를 제거해야 합니다.
until curl -I -k https://mystie url | grep -q "HTTP/1.1 200 OK"
do
.... do something ....
done
대괄호를 잘못 사용했기 때문에 조건이 실패하고 0이 아닌 상태로 종료되므로 루프가 until
멈추지 않습니다.
대괄호( [ ... ]
)에는 조건식만 포함될 수 있으며, 첫 번째 대괄호 뒤와 마지막 대괄호 앞에는 공백이 있어야 합니다.
예를 들어, [ "$var" = "expected value" ]
대신["$var" = "expected value"]