여러 옵션을 선택 해제하는 방법

여러 옵션을 선택 해제하는 방법

저는 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 …

관련 정보