여러 조건이 있는 Bash if 문이 오류를 발생시킵니다.
두 개의 오류 플래그를 검사하는 스크립트를 작성하려고 하는데, 한 개의 플래그(또는 둘 다)가 변경되면 오류가 발생합니다.내 스크립트는 다음과 같습니다.
my_error_flag=0
my_error_flag_o=0
do something.....
if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then
echo "$my_error_flag"
else
echo "no flag"
fi
기본적으로 다음과 같이 해야 합니다.
if ((a=1 or b=2) or (a=1 and b=2))
then
display error
else
no error
fi
표시되는 오류는 다음과 같습니다.
line 26: conditional binary operator expected
line 26: syntax error near `]'
line 26: `if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then'
제 브래킷이 망가졌나요?
사용하다-a
(및의 경우) 및-o
(또는) 작업입니다.
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
갱신하다
사실 당신은 여전히 사용할 수 있습니다.&&
그리고.||
와 함께요-eq
작동.따라서 스크립트는 다음과 같습니다.
my_error_flag=1
my_error_flag_o=1
if [ $my_error_flag -eq 1 ] || [ $my_error_flag_o -eq 2 ] || ([ $my_error_flag -eq 1 ] && [ $my_error_flag_o -eq 2 ]); then
echo "$my_error_flag"
else
echo "no flag"
fi
이 경우 마지막 두 표현식을 삭제하고 한 표현식을 그대로 사용하거나 다음과 같은 연산을 수행할 수 있습니다.
my_error_flag=1
my_error_flag_o=1
if [ $my_error_flag -eq 1 ] || [ $my_error_flag_o -eq 2 ]; then
echo "$my_error_flag"
else
echo "no flag"
fi
둘 중 하나를 사용할 수 있습니다.[[
아니면요?((
키워드를 입력합니다.사용할 때요[[
키워드, 다음과 같은 문자열 연산자를 사용해야 합니다.-eq
,-lt
.생각합니다,((
다음과 같은 연산자를 직접 사용할 수 있으므로 산술에 가장 적합합니다.==
,<
그리고.>
.
사용.[[
교환입니다.
a=$1
b=$2
if [[ a -eq 1 || b -eq 2 ]] || [[ a -eq 3 && b -eq 4 ]]
then
echo "Error"
else
echo "No Error"
fi
사용.((
교환입니다.
a=$1
b=$2
if (( a == 1 || b == 2 )) || (( a == 3 && b == 4 ))
then
echo "Error"
else
echo "No Error"
fi
사용하지 마십시오.-a
아니면요?-o
휴대할 수 없기 때문에 조작합니다.
팔로잉을 시도해 보세요.
if ([ $dateR -ge 234 ] && [ $dateR -lt 238 ]) || ([ $dateR -ge 834 ] && [ $dateR -lt 838 ]) || ([ $dateR -ge 1434 ] && [ $dateR -lt 1438 ]) || ([ $dateR -ge 2034 ] && [ $dateR -lt 2038 ]) ;
then
echo "WORKING"
else
echo "Out of range!"
책을 읽으면 영감을 얻을 수 있습니다.entrypoint.sh
지정된 변수가 설정되었는지 확인하는 MySQL의 기여자가 작성한 스크립트입니다.
스크립트에 나와 있는 것처럼 파이프로 연결할 수 있습니다.-a
예를 들어 다음과 같습니다.
if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
...
fi
언급URL : https://stackoverflow.com/questions/16203088/bash-if-statement-with-multiple-conditions-throws-an-error 입니다.
'programing' 카테고리의 다른 글
DateTime 속성의 기본값을 DateTime으로 설정하는 중입니다.이제 시스템 안으로 들어갑니다.ComponentModel 기본값 특성입니다. (0) | 2023.04.25 |
---|---|
매개 변수를 Bash 함수에 전달합니다. (0) | 2023.04.25 |
모든 Excel 시트 끝에 명명된 시트를 추가하는 방법은 무엇입니까? (0) | 2023.04.25 |
Angular 자습서에서 파이프 및 탭 방법이란 무엇입니까? (0) | 2023.04.25 |
특정 형식의 파일만 있는 디렉토리를 어떻게 구분합니까? (0) | 2023.04.25 |