셸 스 크 립 트 변수, 배열 과 함수

6927 단어 shellscript
  • 변수
  • 1 변수의 정의
  • 3 변수의 역할 영역
  • 3 시스템 변수
  • 이수 조
  • 1 정의 배열
  • 2 배열 길이 arr
  • 가 져 오기
  • 3 모든 원소 arr 가 져 오기
  • 4 부분 요소 arrstartlength
  • 5 배열 요 소 를 교체 하 는 값 arrvalreplace
  • 6 배열 및 요소 unset arrunset arrn 삭제
  • 7 할당 배열 newarrarr
  • 8 링크 배열 newarrarr1arr 1 arr 2 두 배열 사이 에 빈 칸 이 있 습 니 다
  • 8 배열 arrcat filename
  • 에 파일 내용 을 불 러 옵 니 다.
  • 3 함수
  • 1 함수 의 정의
  • 2 함수 호출
  • 3 반환 값 은 return 으로 되 돌아 갈 수 있 지만 0 - 255 사이 의 수
  • 로 되 돌아 갈 수 있 습 니 다.
  • 4 함수 의 매개 변수
  • 5 함수 라 이브 러 리 파일 의 사용 으로 코드 를 다시 사용 할 수 있 습 니 다




  • (1) 변수
    (1) 변수의 정의
    ##等号两边不能有空格
    value=123
    value="jing"
    declare -i value=100
    

    (3) 변수의 역할 영역
  • 부분 변수
  • local 정 의 를 사용 해 야 합 니 다
  • 전역 변수
  • 예 를 들 면:
    #! /bin/bash
    
    func()
    {
        echo "global v1 is $v1" #输出200全局变量
        local v1=100 #局部变量只在函数内有效
        echo local v1 is $v1  #输出100
    }
    vi=200
    func
    echo global v1 is $v1  #输出200

    (3) 시스템 변수
    그러나 스 크 립 트 를 전송 할 때 매개 변수의 값 은 시스템 변수 에 저 장 됩 니 다.
  • $* "매개 변수 1"매개 변수 2 "매개 변수 3"... 의 형식 으로 되 돌려 줍 니 다
  • $#
  • $@ "매개 변수 1 매개 변수 2 매개 변수 3..."형식 으로 되 돌려 줍 니 다
  • $num num 은 숫자 로 num 의 매개 변수
  • 를 대표 합 니 다.
  • $? 이전 명령 이나 함수 의 상태 코드
  • $$이 프로 세 스 의 ID 를 되 돌려 줍 니 다
  • (2) 배열
    (1) 정의 배열
  • 직접 정의
  • arr[0]=”jing”
  • arr[1]=”ti”

  • declare
  • declare -a arr

  • 원소 값 집합
  • arr=(v0 v1 v2 ….)

  • 키 를 통 해
  • arr=([0]=”one” [1]=”two” ….)


  • (2) 배열 길이 ${\# arr [@]} 가 져 오기
    (3) 모든 요 소 를 가 져 옵 니 다 ${arr [@]}
    (4) 일부 요 소 를 캡 처 ${arr [@]: start: length}
    (5) 배열 요소 의 값 을 바 꿉 니 다 ${arr [@]/val/replace}
    (6) 배열 및 요소 unset arr, unset arr [n] 삭제
    (7) 할당 배열 newarr = ("${arr [@]}")
    (8) 링크 배열 newarr = ("arr1 [@]"{arr2 [@]} ") 두 그룹 사이 에 빈 칸 이 있 습 니 다.
    (8) 배열 arr = ($(cat "filename") 에 파일 내용 불 러 오기
    (3) 함수
    (1) 함수 의 정의
    function function_name()
    {
        statement 
        ...
    }
    

    혹시
    function_name()
    {
        statement 
        ...
    }
    

    (2) 함수 호출
    function_name 参数1 参数2 .....
    

    (3) 반환 값 은 return 으로 되 돌아 갈 수 있 지만 0 - 255 사이 의 수 만 되 돌아 갈 수 있 습 니 다.
    예 를 들 면:
    #! /bin/bash
    
    func()
    {
        val=$((11+22))
        return $val
    }
    func 
    echo $? #系统变量获得返回值
    

    (4) 함수 의 매개 변수
    예 를 들 면:
    #! /bin/bash
    
    func()
    {
        val=$(($1+$2)) #如果函数参数超过9时,要使用$(10)才行
        return $val
    }
    func 22 33  #传递参数
    echo $? #系统变量获得返回值
    

    인자 가 너무 많 으 면 shift 이동 파 라 메 터 를 사용 할 수 있 습 니 다. 그 기능 은 파 라 메 터 를 왼쪽으로 이동 시 키 고 원래 의 첫 번 째 파 라 메 터 를 삭제 하 는 것 입 니 다. 따라서 shift 가 한 번 도 $\# 를 빼 지 않 았 습 니 다. 예 를 들 어:
    #! /bin/bash
    func()
    {
        while (($# > 0))
        do
            echo $(1)
            shift
        done    
    }
    func  0 1 2 3 5 6 7 8 9 10  #传递参数
    

    때로는 매개 변수 가 너무 많 고 상황 을 나 누 어야 할 때 가 있 습 니 다. 이 때 는 단순 한 전 삼 으로 수 요 를 만족 시 킬 수 없습니다. 이 때 는 다른 함수 가 필요 합 니 다. 매개 변수 getopts (). 일반 형식: getopts optstring args [optstring]"a: b: c"와 같이 알파벳 뒤에 콜론 이 있 으 면 이 옵션 에 매개 변수 값 을 제공 할 수 있 음 을 설명 합 니 다. 또한 이 매개 변 수 는 시스템 변수 $OPTARGS 에 저 장 됩 니 다.
    예 를 들 면:
     #! /bin/bash
    
     func()
     {
         while getopts "a:b:c" args
         do
             case $args in
                 a)
                     echo a‘s argument is $OPTARG
                     ;;
                 b)
                     echo b‘s argument is $OPTARG
                     ;;
                 *)
                     echo "having no argument "
                     ;;
             esac
         done
     }
     func -a hello -b world
    
    输出为:
    a‘s argument is hello
    b‘s argument is world
    

    (5) 함수 라 이브 러 리 파일 의 사용 으로 코드 를 다시 사용 할 수 있 습 니 다.
    예 를 들 어 test 1. sh:
    #! /bin/bash
    fun()
    {
        if [ $1 -gt $2 ]
        then
            return $1
        else
        {
            return $2
        }
        fi
    }     
    

    이 스 크 립 트 함 수 는 두 수의 크기 를 비교 하여 다른 스 크 립 트 에서 이 함 수 를 호출 합 니 다.
    #! /bin/bash
    . test.sh #加入库文件
    fun 44 22 #直接调用函数
    echo $? 
    

    일반적으로 스 크 립 트 파일 은 고정된 영역 에 넣 고 호출 할 때 상대 경로 나 절 경 로 를 사용 해 야 스 크 립 트 라 이브 러 리 에 웃 을 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기