3. 셸 의 테스트 와 판단 용법

3107 단어
테스트 용법
  • 형식: test 表达式 또는 [ 表达式 ]
  • 조건 은 시 귀환 0值, 조건 은 귀환 非0值 후 와 [ 전의 빈 칸 이 없어 서 는 안 된다.
  • 비교 연산 자: ] -eq = -ge >= -gt > -le <= -lt < -ne != 에 해당 string -n string -z string
  • 테스트 데모:
  • $ test 1 -eq 1
    $ echo $?
    0
    $ test 1 -eq 2
    $ echo $?
    1
    

    테스트 에 문자열 이 하나 밖 에 없습니다. 연산 자가 없 을 때: 반환 값 은 0 입 니 다. 예:
    $ test 1
    $ echo $?
    0
    $ test 0
    $ echo $?
    0
    $ test 001021
    $ echo $?
    0
    $ [ 344 ]
    $ echo $?
    0
    
  • 문자열 연산 자 string1 = string2 문자열 이 비어 있 지 않 은 지 테스트 합 니 다 string1 != string2.
    주의 하 다양쪽 에 빈 칸 이 있어 야 합 니 다. 그렇지 않 으 면 빈 문자열 로 테스트 합 니 다.
    $ test ""
    $ echo $?
    1
    $ test -n ""
    $ test -n "" ; echo $?
    1
    $ test "" ; echo $?
    1
    $ test "hhh" = "hhh"
    $ echo $?
    0
    $ test "hhh" = "hhh   "
    $ echo $?
    1
    $ test "hhh"!="hhh"
    $ echo $?
    0
    
  • 파일 연산 자 -d file 이 디 렉 터 리 -e file 이 존재 하 는 지 여부 -f file 이 일반 파일 -r file 프로 세 스 가 읽 을 수 있 는 지 여부 -s file 길이 가 0 -w file 이 쓸 수 있 는 지 여부 -x file 이 실행 가능 한 지 여부 -L file 이 기호 화 링크 인지 여부 (L 소문 자 불가)
  • 논리 연산 자 ! 表达式 가 반 表达式1 -a 表达式2 을 취 하 는 동시에 진 表达式1 -o 表达式2 은 진
  • 이다.
    판 가름
    if 뒤에 있 는 표현 식 은 두 가지 형식 이 있 습 니 다. (( 表达式 )) 여기 표현 식 에서 연산 자 를 사용 해 야 합 니 다 普通运算符 (=, = 등) [ 表达式 ] 여기 표현 식 에서 연산 자 를 사용 해 야 합 니 다 测试运算符 (- eq, - lt, - ge 등)
    하나의 demo 는 용법 을 설명 할 수 있 습 니 다.
    $ cat test.sh 
    #!/bin/bash
    
    echo "输入一个数进行测试"
    read num
    if [ 1 -eq $num ] ; then
        echo 输入了1
        exit 0
    elif [ $num -lt 5 ]
    then
        echo "大于1小于5"
        exit 2
    else
        case "$num" in
            5)
                echo "输入了5";;
            6)  
                echo "输入了6";;
            7)
                echo "输入了7";;
            *)
                echo "大于7";;
        esac
        exit 3
    fi
    $ ./test.sh ; echo '$?:'$?
    输入一个数进行测试
    1
    输入了1
    $?:0
    $ ./test.sh ; echo '$?:'$?
    输入一个数进行测试
    3
    大于1小于5
    $?:2
    $ ./test.sh ; echo '$?:'$?
    输入一个数进行测试
    6
    输入了6
    $?:3
    $ ./test.sh ; echo '$?:'$?
    输入一个数进行测试
    8
    大于7
    $?:3
    

    주의해 야 할 것 은 케이스 의 모든 일치 하 는 조건 의 실행 뒤에 반드시 있어 야 한 다 는 것 이다.그렇지 않 으 면 오 류 를 제시 할 것 이다. 나 는 이전에 다음 을 계속 실행 하 는 줄 알 았 다.
  • 산수 와 비트 연산 자 는 대부분 c 언어 와 일치 하고 이하 가 특별 하 다
  • * * 멱 연산 ~ 비트 별 비 ^ 비트 별 또는
  • 서로 다른 진수 표시
  • 2 진 표시:
    $ let "num=2#10" ; echo $num
    2
    

    8 진 표시:
    $ let "num=010";echo $num
    8
    $ let "num=8#10" ; echo $num
    8
    

    16 진수 표시:
    $ let "num=16#10" ; echo $num
    16
    
    # 진 이 더 넓 고 모든 진 이 가능 하 다 는 뜻 이다.

    좋은 웹페이지 즐겨찾기