다중 출구 선택 방법

다중 출구 선택 방법

나는 bash 스크립팅을 처음 접했고 내 스크립트의 특정 부분에 어떤 문제가 있는지 이해하지 못합니다. 내 스크립트에 있는 모든 종료를 선택하려고 합니다. 그리고 해당 조건이 모두 충족되지 않으면 유효하지 않고 그렇지 않으면 유효하다는 조건을 설정하려고 합니다.

if [[ `echo $?` -ne {0..4} ]]
then
         echo "Its a Valid Date."
 else
         echo " Not valid date."
fi

실행하면 다음과 같은 결과를 얻습니다.

kpatel138@matrix:~/Lab2> ./cal2 1994 5 4
./cal2: line 40: unexpected argument `(' to conditional binary operator
./cal2: line 40: syntax error near `(0'
./cal2: line 40: `if [[ `echo $?` -ne (0..4) ]]'

답변1

`echo $?`복잡한 글쓰기 방식입니다 $?. 분명하고 간단한 방법이 있는데 복잡한 방식으로 일을 하지 마세요.

$?0, 1, 2, 3 또는 4 값 중 하나인지 테스트하고 싶은 것 같습니다. 사용 중인 구문이 의미가 없습니다. 다섯 가지 동일 사례를 모두 테스트할 수 있습니다.

if [[ $? -eq 0 || $? -eq 1 || $? -eq 2 || $? -eq 3 || $? -eq 4 ]]; then …

그러나 그것은 지나치게 장황하다. 0~4 범위를 허용하려고 하므로 $?최소값보다 크고 최대값보다 작은지 테스트합니다.

if [[ $? -ge 0 && $? -le 4 ]]; then …

$?결코 부정적이지 않으므로 테스트 $? -ge 0가 불필요합니다. 따라서:

if [[ $? -le 4 ]]; then …

이는 산술 표현식을 사용하여 작성할 수도 있습니다. 연산자가 다르다는 점에 유의하십시오. 괄호 안의 조건부 구문은 -eq, -ne, -le, -ge-lt를 사용하여 -gt정수를 비교하는 반면 산술 표현식은 C와 유사한 구문을 갖습니다.

if (($? <= 4)); then …

관련 정보