Unix 스크립트의 루프까지 무한 루프

Unix 스크립트의 루프까지 무한 루프

나는 유닉스 스크립트를 사용하고 있습니다 until loop. 내 스크립트의 아이디어는 URL 상태가 작동하는지 작동 중지되는지 지속적으로 확인해야 한다는 것입니다. 작동하면 루프를 종료합니다. 내 스크립트에서는 curlURL 상태와 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"]

관련 정보