나는 논리적 '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
설정한 경우 다음과 같습니다.a
a="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