Linux Shell 의 Shell 변수

4774 단어 변량shell
1. 머리말
셸 변 수 는 약 한 형식 으로 사용자 정의 변 수 를 지원 합 니 다.
  • 성명 변 수 는 성명 형식 을 사용 하지 않 습 니 다
  • 서로 다른 유형의 내용 을 저장 할 수 있다
  • 사용 시 변수의 유형 을 명 확 히 해 야 한다
  • 대소 문자 구분
  • 변수 형식
    셸 을 실행 할 때 세 가지 변수 가 동시에 존재 합 니 다.
    1) 부분 변수
    부분 변 수 는 스 크 립 트 나 명령 에서 정의 합 니 다. 현재 셸 인 스 턴 스 에서 만 유효 합 니 다. 다른 셸 이 시작 하 는 프로그램 은 부분 변 수 를 방문 할 수 없습니다.
    2) 환경 변수
    모든 프로그램 은 셸 이 시작 하 는 프로그램 을 포함 하여 환경 변 수 를 방문 할 수 있 으 며, 일부 프로그램 은 환경 변 수 를 통 해 정상 적 인 운행 을 보장 해 야 합 니 다.필요 할 때 셸 스 크 립 트 도 환경 변 수 를 정의 할 수 있 습 니 다.
    3) 셸 변수
    셸 변 수 는 셸 프로그램 이 설정 한 특수 변수 입 니 다.셸 변수 중 일 부 는 환경 변수 이 고 일 부 는 부분 변수 입 니 다. 이런 변 수 는 셸 의 정상 적 인 운행 을 보장 합 니 다.
    2. 변수 정의
    변 수 를 정의 할 때 변 수 는 달러 기호 ($) 를 추가 하지 않 습 니 다. 예 를 들 어:
    variableName="value"
    변수 이름과 등호 사이 에 빈 칸 이 있어 서 는 안 됩 니 다. 이것 은 당신 이 잘 아 는 모든 프로 그래 밍 언어 와 다 를 수 있 습 니 다.또한 변수 이름 의 이름 은 다음 과 같은 규칙 을 따라 야 합 니 다.
  • 첫 글 자 는 알파벳 (a - z, A - Z) 이 어야 합 니 다.
  • 중간 에 빈 칸 이 없 으 며 밑줄 () 을 사용 할 수 있 습 니 다.
  • 문장 부 호 를 사용 할 수 없다.
  • bash 의 키 워드 를 사용 할 수 없습니다.

  • 3. 사용 변수
    정 의 된 변 수 를 사용 합 니 다. 변수 이름 앞 에 달러 기호 ($) 를 추가 하면 됩 니 다. 예 를 들 어:
    일반 텍스트 새 창 복사
    your_name="mozhiyan"
    echo $your_name
    echo ${your_name}

    4. 변수 만 읽 기
    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.
    5. 변수 삭제
    unset 명령 을 사용 하면 변 수 를 삭제 할 수 있 습 니 다.문법:
    unset variable_name
    변수 가 삭 제 된 후 다시 사용 할 수 없습니다.unset 명령 은 읽 기 전용 변 수 를 삭제 할 수 없습니다.
    예 를 들 어:
    #!/bin/sh
    myUrl="http://see.xidian.edu.cn/cpp/u/xitong/"
    unset myUrl
    echo $myUrl

    위의 스 크 립 트 는 출력 이 없습니다.
    6. 특수 변수
    특수 변수 목록
    변량
    속뜻
    $0
    현재 스 크 립 트 의 파일 이름
    $n
    스 크 립 트 나 함수 에 전달 되 는 인자 입 니 다.n 은 하나의 숫자 로 몇 번 째 인 자 를 나타 낸다.예 를 들 어 첫 번 째 인 자 는 $1 이 고 두 번 째 인 자 는 $2 입 니 다.
    $#
    스 크 립 트 나 함수 에 전달 되 는 매개 변수 갯 수 입 니 다.
    $*
    스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.
    $@
    스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.따옴표 (") 에 포 함 될 때 $* 와 조금 다 르 면 아래 에 설명 하 겠 습 니 다.
    $?
    이전 명령 의 종료 상태 나 함수 의 반환 값 입 니 다.
    $$
    현재 Shell 프로 세 스 ID 입 니 다.셸 스 크 립 트 에 대해 서 는 이 스 크 립 트 가 있 는 프로 세 스 ID 입 니 다.
    명령 행 인자
    스 크 립 트 를 실행 할 때 스 크 립 트 에 전 달 된 매개 변 수 를 명령 행 매개 변수 라 고 합 니 다.명령 행 인 자 는 $n 으로 표시 합 니 다. 예 를 들 어 $1 은 첫 번 째 인 자 를 표시 하고 $2 는 두 번 째 인 자 를 표시 하 며 순서대로 유추 합 니 다.
    #!/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 : $#"
    
    ZP1015@ubuntu:~/myshell$ ./hello.sh ZP1015 SCUT
    File Name: ./hello.sh
    First Parameter : ZP1015
    First Parameter : SCUT
    Quoted Values: ZP1015 SCUT
    Quoted Values: ZP1015 SCUT
    Total Number of Parameters : 2
    

    그 $@ 과 $* 는 어떤 차이 가 있 습 니까?
    $* 와 $@ 은 함수 나 스 크 립 트 에 전 달 된 모든 인 자 를 표시 합 니 다. 작은 따옴표 (") 에 포함 되 지 않 을 때" $1 "," $2 "," $n "으로 모든 인 자 를 출력 합 니 다.그러나 두 따옴표 (") 에 포 함 될 때" $* "는 모든 인 자 를 하나의 전체 로 하고" $1 $2... $n "형식 으로 모든 인 자 를 출력 합 니 다."$@" 은 각 인 자 를 분리 하여 "$1", "$2", "$n" 형식 으로 모든 인 자 를 출력 합 니 다.아래 의 예 는 $* 와 $@ 의 차 이 를 뚜렷하게 볼 수 있 습 니 다.
    #!/bin/bash
    echo "\$*=" $*
    echo "\"\$*\"=" "$*"
    
    echo "\$@=" $@
    echo "\"\$@\"=" "$@"
    
    echo "print each param from \$*"
    for var in $*
    do
        echo "$var"
    done
    
    echo "print each param from \$@"
    for var in $@
    do
        echo "$var"
    done
    
    echo "print each param from \"\$*\""
    for var in "$*"
    do
        echo "$var"
    done
    
    echo "print each param from \"\$@\""
    for var in "$@"
    do
        echo "$var"
    done
    ZP1015@ubuntu:~/myshell$ ./test.sh 1 2 3 4 5
    $*= 1 2 3 4 5
    "$*"= 1 2 3 4 5
    $@= 1 2 3 4 5
    "$@"= 1 2 3 4 5
    print each param from $*
    1
    2
    3
    4
    5
    print each param from $@
    1
    2
    3
    4
    5
    print each param from "$*"
    1 2 3 4 5
    print each param from "$@"
    1
    2
    3
    4
    5

    7. 퇴장 상태
    $? 이전 명령 의 종료 상 태 를 가 져 올 수 있 습 니 다.종료 상태 란 이전 명령 이 실 행 된 후 되 돌아 오 는 결과 입 니 다.종료 상 태 는 숫자 입 니 다. 일반적으로 대부분의 명령 이 성공 하면 0 으로 돌아 가 고 실패 하면 1 로 돌아 갑 니 다.그러나 다른 값 으로 돌아 가 다양한 종류의 오 류 를 표시 하 는 명령 도 있다.

    좋은 웹페이지 즐겨찾기