셸 입문 부터 포기 까지 2 단계 ing

이 글 은 셸 이 입문 에서 포기 까지 의 첫 단 계 를 이 어 받 았 다.
이로써 소 백 에서 포기 하 는 두 번 째 부분 까지 @ @
셸 연산 자
Shell 은 많은 연산 자 를 지원 합 니 다. 이 는 Shell 연산 자, 관계 연산 자, 불 연산 자, 문자열 연산 자 등 을 포함 합 니 다.
산술 연산    연산 자:        +,-        *, /        %:나머지 를 취하 다        **:차방            산술 연산 형식:        (1) let  VAR = 산술 식        (2) VAR = $[산술 표현 식]        (3) VAR = $(산술 식)        (4) VAR=$(expr $ARG1 $OP $ARG2)
예 를 들 어 두 개의 수 를 더 하면


#!/bin/bash
val = ` expr 2 + 2 ` \ # 또는 var = $(expr 2 + 2)
echo "Total value : $val"
스 크 립 트 출력 실행:
Total value : 4

두 가지 주의:
  • 표현 식 과 연산 자 사이 에 빈 칸 이 있어 야 합 니 다. 예 를 들 어 2 + 2 는 옳지 않 습 니 다. 2 + 2 로 써 야 합 니 다. 이것 은 우리 가 잘 아 는 대부분의 프로 그래 밍 언어 와 다 릅 니 다.
  • 완전한 표현 식 은 ` 포함 되 어야 합 니 다. 이 문 자 는 자주 사용 하 는 작은 따옴표 가 아니 라 Esc 키 아래 에 있 습 니 다.명령 을 바 꾸 거나 $()
  • 를 사용 합 니 다.
    #!/bin/sh
    
    a=10
    b=20
    val=`expr $a + $b`
    echo "a + b : $val"
    
    val=`expr $a - $b`
    echo "a - b : $val"
    
    val=`expr $a \* $b`
    echo "a * b : $val"
    
    val=`expr $b / $a`
    echo "b / a : $val"
    
    val=`expr $b % $a`
    echo "b % a : $val"
    
    if [ $a == $b ]
    then
       echo "a is equal to b"
    fi
    
    if [ $a != $b ]
    then
       echo "a is not equal to b"
    fi
        :a + b : 30
    a - b : -10
    a * b : 200
    b / a : 2
    b % a : 0
    a is not equal to b

    주의:
  • 곱셈 (*) 앞 에는 반드시 역 슬 래 쉬 전의 (\) 를 넣 어야 곱셈 연산 을 실현 할 수 있다.

  • 관계 연산 자
    관계 연산 자 는 문자열 의 값 이 숫자 가 아 닌 숫자 만 지원 합 니 다.
    연산 자
    설명 하 다.
    예 를 들다
    -eq
    두 개의 수가 같은 지 확인 하고, 같은 값 으로 true 로 돌아 갑 니 다.
    [$a - eq $b] 돌아 가기 true。
    -ne
    두 개의 수가 같 는 지 확인 하고, 같 지 않 으 면 true 로 돌아 갑 니 다.
    [$a - ne $b] 트 루 로 돌아 갑 니 다.
    -gt
    왼쪽 의 수가 오른쪽 보다 큰 지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
    [$a - gt $b] false 로 돌아 갑 니 다.
    -lt
    왼쪽 의 수가 오른쪽 보다 작은 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
    [$a - lt $b] 트 루 로 돌아 갑 니 다.
    -ge
    왼쪽 의 수가 오른쪽 보다 큰 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
    [$a - ge $b] false 로 돌아 갑 니 다.
    -le
    왼쪽 의 수가 오른쪽 보다 작은 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
    [$a - le $b] 트 루 로 돌아 갑 니 다.
       
    #!/bin/sh
    
    a=10
    b=20
    if [ $a -eq $b ]
    then
    echo "$a -eq $b : a is equal to b"
    else
    echo "$a -eq $b: a is not equal to b"
    fi
         
    10 -eq 20: a is not equal to b

     
    불 연산 자
    연산 자
    설명 하 다.
    예 를 들다
    !
    비 연산, 표현 식 이 true 이면 false 를 되 돌려 줍 니 다. 그렇지 않 으 면 true 를 되 돌려 줍 니 다.
    [! false] 트 루 로 돌아 가.
    -o
    또는 연산, 트 루 표현 식 이 있 으 면 트 루 로 돌아 갑 니 다.
    [$a - lt 20 - o $b - gt 100] 돌아 가기 true。
    -a
    연산 과 함께 두 표현 식 이 모두 true 여야 true 로 돌아 갑 니 다.
    [$a - lt 20 - a $b - gt 100] 돌아 가기 false。
    예시
    #!/bin/sh
    
    a=10
    b=20
    
    if [ $a -lt 100 -a $b -gt 15 ]
    then
       echo "$a -lt 100 -a $b -gt 15 : returns true"
    else
       echo "$a -lt 100 -a $b -gt 15 : returns false"
    fi
    
         
    10 -lt 100 -a 20 -gt 15 : returns true

     
    문자열 연산 자
    연산 자
    설명 하 다.
    예 를 들다
    =
    두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
    [$a = $b] false 를 되 돌려 줍 니 다.
    !=
    두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
    [$a! = $b] 돌아 가기 true。
    -z
    문자열 길이 가 0 인지, 0 인지 true 로 되 돌아 갑 니 다.
    [- z $a] false 로 돌아 갑 니 다.
    -n
    문자열 길이 가 0 인지, 0 이 아 닌 true 를 되 돌려 줍 니 다.
    [- z $a] 트 루 로 돌아 갑 니 다.
    str
    문자열 이 비어 있 는 지, 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
    [$a] 귀환 true。
    #!/bin/sh
    
    a="abc"
    b="efg"
    
    if [ $a = $b ]
    then
       echo "$a = $b : a is equal to b"
    else
       echo "$a = $b: a is not equal to b"
    fi
        
    abc = efg: a is not equal to b

    파일 테스트 연산 자
    파일 테스트 연산 자 는 유 닉 스 파일 의 각종 속성 을 검사 하 는 데 사 용 됩 니 다.
      
    조작 부호
    설명 하 다.
    예 를 들다
    -b file
    파일 이 블록 장치 파일 인지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
    [- b $file] false 를 되 돌려 줍 니 다.
    -c file
    파일 이 문자 장치 파일 인지 확인 하고 트 루 로 돌아 갑 니 다.
    [- b $file] 복귀 false。
    -d file
    파일 이 디 렉 터 리 인지 확인 하고 트 루 로 돌아 갑 니 다.
    [- d $file] false 를 되 돌려 줍 니 다.
    -f file
    파일 이 일반 파일 인지 확인 합 니 다 (디 렉 터 리 도 장치 파일 도 아 닙 니 다). 그렇다면 true 로 돌아 갑 니 다.
    [- f $file] 복귀 true。
    -g file
    파일 에 SGID 비트 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 돌아 갑 니 다.
    [- g $file] 복귀 false。
    -k file
    파일 에 붙 어 있 는 비트 (Sticky Bit) 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 되 돌려 줍 니 다.
    [- k $file] 복귀 false。
    -p file
    파일 이 구명 파이프 인지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
    [- p $file] 복귀 false。
    -u file
    파일 에 SUID 비트 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 돌아 갑 니 다.
    [- u $file] 복귀 false。
    -r file
    파일 을 읽 을 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- r $file] 복귀 true。
    -w file
    파일 을 쓸 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- w $file] 복귀 true。
    -x file
    파일 이 실 행 될 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- x $file] 복귀 true。
    -s file
    파일 이 비어 있 는 지 확인 합 니 다 (파일 크기 가 0 이상 인지). 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
    [- s $file] 복귀 true。
    -e file
    파일 (디 렉 터 리 포함) 이 존재 하 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- e $file] 복귀 true。
    이것 은 매우 간단 하 니 예 를 들 지 않 겠 다.
    2. 문자열 과 주석
    문자열 은 셸 프로 그래 밍 에서 가장 자주 사용 되 는 데이터 형식 (숫자 와 문자열 을 제외 하고 다른 유형 도 사용 할 수 없습니다) 입 니 다. 문자열 은 작은 따옴표 도 사용 할 수 있 고 작은 따옴표 도 사용 할 수 있 으 며 따옴표 도 사용 하지 않 아 도 됩 니 다.작은 따옴표 의 차 이 는 PHP 와 유사 하 다.
    작은 따옴표
    str = 'this is a string' 작은 따옴표 문자열 의 제한:
    작은 따옴표 의 모든 문 자 는 그대로 출력 되 며, 작은 따옴표 문자열 의 변 수 는 유효 하지 않 습 니 다.
    작은 따옴표 문자열 에 작은 따옴표 가 나타 나 면 안 됩 니 다.
    작은 따옴표
    your_name='qinjx'str="Hello, I know your are \"$your_name \ "!" 따옴표 의 장점:
    따옴표 에 변수 가 있 을 수 있 습 니 다.
    따옴표 에 전의 문자 가 나타 날 수 있다.
    맞 춤 문자열
    your_name="qinjx"
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    echo $greeting $greeting_1

    문자열 길이 가 져 오기
    string="abcd"echo ${#string} #   4

    하위 문자열 추출
    string="alibaba is a great company"echo ${string:1:4} #  liba

    하위 문자열 찾기
    string="alibaba is a great company"echo `expr index "$string" is`

    3. 배열
    정의 배열
    셸 에 서 는 괄호 로 배열 을 표시 하고 배열 요 소 는 '빈 칸' 기호 로 나 뉜 다.배열 의 일반적인 형식 을 다음 과 같이 정의 합 니 다.    array_name = (value 1... valen) 예:
    array_name=(value0 value1 value2 value3)

    혹은
    array_name=(
    value0
    value1
    value2
    value3
    )

    배열 의 각 분량 을 따로 정의 할 수 있 습 니 다.
    array_name[0]=value0
    array_name[1]=value1
    array_name[2]=value2

    연속 적 인 하 표를 사용 하지 않 아 도 되 고 하 표 의 범 위 는 제한 이 없다.
    읽 기 배열
    배열 요소 값 을 읽 는 일반적인 형식 은:    ${array name [index]} 예:
    valuen=${array_name[2]}

    예 를 들 어:
    #!/bin/sh
    
    NAME[0]="Zara"
    NAME[1]="Qadir"
    NAME[2]="Mahnaz"
    NAME[3]="Ayan"
    NAME[4]="Daisy"
    echo "First Index: ${NAME[0]}"
    echo "Second Index: ${NAME[1]}"

    스 크 립 트 실행, 출력:
    $./test.sh
    First Index: Zara
    Second Index: Qadir

    @ 또는 * 를 사용 하면 배열 의 모든 요 소 를 가 져 올 수 있 습 니 다. 예 를 들 어:
    ${array_name[*]}
    ${array_name[@]}

    예 를 들 어:
    #!/bin/sh
    
    NAME[0]="Zara"
    NAME[1]="Qadir"
    NAME[2]="Mahnaz"
    NAME[3]="Ayan"
    NAME[4]="Daisy"
    echo "First Method: ${NAME[*]}"
    echo "Second Method: ${NAME[@]}"

    스 크 립 트 실행, 출력:
    $./test.sh
    First Method: Zara Qadir Mahnaz Ayan Daisy
    Second Method: Zara Qadir Mahnaz Ayan Daisy

    배열 의 길이 가 져 오기
    배열 길 이 를 가 져 오 는 방법 은 문자열 길 이 를 가 져 오 는 방법 과 같 습 니 다. 예 를 들 어:
    #          
    length=${#array_name[@]}
    #   
    length=${#array_name[*]}
    #            
    lengthn=${#array_name[n]}

    if - else
    계속...

    좋은 웹페이지 즐겨찾기