조건식의 구문 오류

조건식의 구문 오류

저는 논리적 "OR" 문과 논리적 "AND" 문을 조합하여 사용하는 스크립트를 작성하고 있습니다. 스크립트는 다음과 같습니다.

#!/bin/bash

echo "Enter the value of a"
read $a
echo "Enter the value of b"
read $b
if

[[ $a != STARTED && $b == STARTED ] || [ $b != STARTED && $a == STARTED ]]; then

echo "Either of the JVMs is not yet up, so lets wait for some more time"

i=$(($i+1))
sleep 1s

fi

그리고 실행할 때 다음 오류가 발생합니다.

line 13: syntax error in conditional expression
line 13: syntax error near `]'
line 13: `[[ $a != STARTED && $b == STARTED ] || [ $b != STARTED && $a == STARTED ]]; then'

나는 bash 쉘을 사용하고 있습니다. 이에 대한 도움을 주시면 대단히 감사하겠습니다.

답변1

당신은 [[일치하지 않습니다 ]. 항상 및 로 닫혀야 합니다 [[. 사용:]][]

if [[ $a != STARTED && $b == STARTED ]] || [[ $b != STARTED && $a == STARTED ]]; then

더 나은 점은 다음을 [[사용하고 있기 때문입니다.

if [[ ($a != STARTED && $b == STARTED) || ($b != STARTED && $a == STARTED) ]]; then

형식을 적용한 후에야 발견한 또 다른 실수는 다음과 같은 작업을 수행한다는 것입니다.

read $a
read $b

다음을 수행해야 합니다.

read a
read b

첫 번째 형식의 경우 $a$b는 셸에 의해 해당 내용으로 대체되므로 이 줄 앞에 설정하지 않은 경우 최종 명령은 다음과 같습니다.

read

(이 경우 읽은 값은 변수에 저장됩니다 .) 일부 값(예 : )을 REPLY설정하면 다음과 같습니다.aa="blah blah"

read blah blah

답변2

바꾸다:

[[ $a != STARTED && $b == STARTED ] || [ $b != STARTED && $a == STARTED ]]; then

나는 다음을 사용할 것이다:

if [ $a != STARTED && $b == STARTED ] || [ $b != STARTED && $a == STARTED ]; then

관련 정보