Shell 학습 의 길-(03-변수,문자열,배열)

9084 단어 Shell
변수,문자열,배열
1.변수
1.1 일반 변수
변수 이름 의 이름 은 다음 과 같은 규칙 을 따라 야 합 니 다.
  • 의 첫 번 째 문 자 는 알파벳(a-z,A-Z)이 어야 합 니 다.
  • 중간 에 빈 칸 이 없 으 며 밑줄()을 사용 할 수 있 습 니 다.
  • 은 문장 부 호 를 사용 할 수 없다.
  • 은 bash 의 키 워드 를 사용 할 수 없습니다.

  • 변 수 를 정의 할 때 변 수 는 달러 기호($)를 추가 하지 않 습 니 다.예 를 들 어:
    variableName="value"

    정 의 된 변 수 를 사용 합 니 다.변수 이름 앞 에 달러 기호($)를 추가 하면 됩 니 다.{}추가 할 수 있 습 니 다.예 를 들 어:
    your_name="mozhiyan"
    echo $your_name
    echo ${your_name}

    정 의 된 변 수 는 다음 과 같이 다시 정의 할 수 있 습 니 다.
    myUrl="http://see.xidian.edu.cn/cpp/linux/"
    echo ${myUrl}
    myUrl="http://see.xidian.edu.cn/cpp/shell/"
    echo ${myUrl}

    readonly 명령 을 사용 하면 변 수 를 읽 기 전용 변수 로 정의 할 수 있 으 며,읽 기 전용 변수의 값 은 변경 할 수 없습니다.
    다음 의 예 는 읽 기 전용 변 수 를 변경 하려 고 시도 하 였 으 나 결 과 는 잘못 되 었 습 니 다.
    #!/bin/bash
    myUrl="http://see.xidian.edu.cn/cpp/shell/"
    readonly myUrl
    myUrl="http://see.xidian.edu.cn/cpp/danpianji/"

    스 크 립 트 를 실행 합 니 다.결 과 는 다음 과 같 습 니 다.
    /bin/sh: NAME: This variable is read only.

    unset 명령 을 사용 하면 변 수 를 삭제 할 수 있 습 니 다.문법:
    unset variable_name

    변수 가 삭 제 된 후 다시 사용 할 수 없습니다.unset 명령 은 읽 기 전용 변 수 를 삭제 할 수 없습니다.
    예 를 들 어:
    #!/bin/sh
    myUrl="http://see.xidian.edu.cn/cpp/u/xitong/"
    unset myUrl
    echo $myUrl

    위의 스 크 립 트 는 출력 이 없습니다.
    1.2 특수 변수
    변량
    속뜻
    $0
    현재 스 크 립 트 의 파일 이름
    $n
    스 크 립 트 나 함수 에 전달 되 는 인자 입 니 다.
    $#
    스 크 립 트 나 함수 에 전달 되 는 매개 변수 갯 수 입 니 다.
    $*
    스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.
    $@
    스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.
    $?
    이전 명령 의 종료 상태 나 함수 의 반환 값 입 니 다.
    $$
    현재 Shell 프로 세 스 ID 입 니 다.셸 스 크 립 트 에 대해 서 는 이 스 크 립 트 가 있 는 프로 세 스 ID 입 니 다.
    예:
    #!/bin/bash
    echo "File Name: $0"
    echo "First Parameter : $1"
    echo "First Parameter : $2"
    echo "Quoted Values: $@"
    echo "Quoted Values: $*"
    echo "Total Number of Parameters : $#"

    실행 결과:
    $./test.sh Zara Ali
    File Name : ./test.sh
    First Parameter : Zara
    Second Parameter : Ali
    Quoted Values: Zara Ali
    Quoted Values: Zara Ali
    Total Number of Parameters : 2

    ∗와@의 차이
    *8727,@은 함수 나 스 크 립 트 에 전 달 된 모든 인 자 를 표시 합 니 다.작은 따옴표(")에 포함 되 지 않 을 때"1","2","$n"형식 으로 모든 인 자 를 출력 합 니 다.
    그러나 따옴표(")에 포 함 될 때"8727°"모든 매개 변 수 를 하나의 전체 로 하고"12...n"형식 으로 모든 매개 변 수 를 출력 합 니 다."@"모든 인 자 를'1','2','n'으로 나 누 어 출력 합 니 다.
    2.문자열
    문자열 은 셸 프로 그래 밍 에서 가장 자주 사용 되 는 데이터 형식(숫자 와 문자열 을 제외 하고 다른 유형 도 사용 할 수 없습니다)입 니 다.문자열 은 작은 따옴표 도 사용 할 수 있 고 작은 따옴표 도 사용 할 수 있 으 며 따옴표 도 사용 하지 않 아 도 됩 니 다.작은 따옴표 의 차 이 는 PHP 와 유사 하 다.
    2.1 작은 따옴표
  • 작은 따옴표 의 모든 문 자 는 그대로 출력 되 고 작은 따옴표 문자열 의 변 수 는 유효 하지 않 습 니 다.
  • 작은 따옴표 문자열 에 작은 따옴표 가 나타 나 면 안 됩 니 다.

  • 예:
    str='this is a string'

    2.2 따옴표
  • 쌍 따옴표 에 변수
  • 이 있 을 수 있 습 니 다.
  • 쌍 따옴표 에 전의 문자
  • 이 나타 날 수 있다.
    예 1:
    your_name='qinjx'
    str="Hello, I know your are \"$your_name\"! 
    "

    예 2:
    your_name="qinjx"
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    
    echo $greeting $greeting_1

    2.3 문자열 길이 가 져 오기
    길이 가 져 오기 및 위의 특수 변 수 를 통 해$\#변 경 된 것 입 니 다.
    string="abcd"
    echo ${#string} 

    2.4 하위 문자열 추출
    예 1.1-4,세 개의 문자열 을 캡 처 하고 두 가지 방식 의 시작 위치 계산 방식 이 다 릅 니 다.하 나 는 0 에서 시작 하고 하 나 는 1 에서 시작 합 니 다.
    string="alibaba is a great company"
    echo ${string:1:4} 
      
    echo `expr substr "$string" 2 4`

    예 2,1 뒤의 모든 문 자 를 캡 처 합 니 다.
     echo ${string:1}

    2.5 하위 문자열 찾기
    이니셜 이 있 는 위 치 를 찾 습 니 다.예:
    string="alibaba is a great company"
    echo `expr index "$string" is`
    echo `expr index "$string" llll`
    echo `expr index "$string" bjhjkhjkhj`
    echo `expr index "$string" gg`

    결과:
    3
    2
    4
    14

    이 함 수 는 첫 번 째 자모 가 처음 나타 난 위치 만 검출 한 다 는 것 을 알 수 있다.
    3.배열
    bash 는 1 차원 배열(다 차원 배열 은 지원 되 지 않 음)을 지원 하고 배열 의 크기 를 제한 하지 않 습 니 다.C 언어 와 유사 하 며,배열 요소 의 아래 표 시 는 0 부터 번 호 를 매 긴 다.배열 의 요 소 를 가 져 오 려 면 아래 표 시 를 이용 해 야 합 니 다.아래 표 시 는 정수 나 산술 표현 식 일 수 있 습 니 다.그 값 은 0 보다 크 거나 같 아야 합 니 다.
    3.1 정의 배열
    셸 에 서 는 괄호 로 배열 을 표시 하고 배열 요 소 는'빈 칸'기호 로 나 뉜 다.
    배열 을 정의 하 는 일반적인 형식 은 array_name=(value1 ... valuen) 예 를 들 어:
    array_name=(value0 value1 value2 value3)
      
    array_name=(
    value0
    value1
    value2
    value3
    )

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

    연속 적 인 하 표를 사용 하지 않 아 도 되 고 하 표 의 범 위 는 제한 이 없다.
    3.2 읽 기 배열
    배열 요소 값 을 읽 는 일반적인 형식 은 ${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

    3.3 배열 의 길 이 를 가 져 옵 니 다.
    배열 길 이 를 가 져 오 는 방법 은 문자열 길 이 를 가 져 오 는 방법 과 같 습 니 다.예 를 들 어:
  • 에서 수조 원 소 를 얻 은 개수 length=${#array_name[@]} 또는 length=${#array_name[*]}
  • 수조 단일 원소 의 길 이 를 얻 은 lengthn=${#array_name[n]}
  • 변수,문자열,배열 의 분석 은 여기까지 입 니 다.깨 달 음 이 있 을 때 계속 업 데 이 트 됩 니 다.
    주의:상기 내용 은 C 언어 중국어 망 및 본인 이 사용 하 는 과정 에 대한 이해 와 정리 에서 나 온 것 입 니 다.만약 권리 침해 가 있 으 면 제때에 저 에 게 알려 주 십시오.저 는 즉시 삭제 할 것 입 니 다.잘못된 점 이 있 으 면 지적 하고 토론 하 겠 습 니 다.글 은 안내 역할 을 할 뿐 상세 한 데이터 분석 내용 은 Shell 관련 튜 토리 얼 도 보 세 요.찾 아 봐 주 셔 서 감사합니다.

    좋은 웹페이지 즐겨찾기