[언어] Bash 셸 용법 및 그 총화 노트

6331 단어 언어.Linux
앞 에 쓰다
리 눅 스 시스템 개발 과 관련 된 일 을 하면 셸 과 접촉 하 는 것 을 피 할 수 없다. 또한 셸 을 잘 사용 하면 셸 문법 을 잘 알 면 되 는 것 이 아니 라 관련 리 눅 스 명령 에 대해 잘 알 아야 기능 이 강 한 셸 스 크 립 트 를 쓸 수 있다. 이 글 은 셸 의 문법 지식 을 상세 하 게 설명 하지 않 지만 가치 있 는 자 료 를 추천 할 것 이다. 본 고의 주요 목적 은...셸 의 관건 적 인 지식 점, 주의해 야 할 구덩이, 흔히 볼 수 있 는 장면 에서 셸 스 크 립 트 를 기록 합 니 다.
셸 의 학습 에 참고 할 수 있 는 자 료 는 다음 과 같다.
셸 튜 토리 얼
리 눅 스 명령
Bash shell
셸 은 엄격 한 의미 에서 볼 때 사용자 와 커 널 의 상호작용 도구 로 시스템 호출 에 의 해 이 루어 집 니 다. 셸 script 은 셸 로 쓴 스 크 립 트 프로그램 을 말 합 니 다. 그러나 우 리 는 쉽게 말 하면 셸 과 셸 script 을 동일시 합 니 다. 셸 은 여러 가지 가 있 습 니 다. 본 셸 /usr/bin/sh 또는 / bin/sh, Bourne Again Shell /bin/bash 등 이 있 지만 가장 많이 사용 되 는 것 은 bin/bash 입 니 다.
1) 변수
  • 사용 변수: ${variable_name}
  • 변수 만 읽 기: readonly varable_name
  • 삭제 변수: unset variable_name, unset 는 읽 기 전용 변 수 를 삭제 할 수 없습니다
  • 2) 문자열 의 작은 따옴표 와 작은 따옴표 의 차 이 는 PHP 와 같 습 니 다. 작은 따옴표 는 문자열 에 대한 해석 과 전 의 를 하지 않 고 작은 따옴표 는 문자열 의 변 수 를 해석 하거나 전의 문 자 를 전의 합 니 다.
  • 문자열 맞 춤 법: ${variable_name1}${variable_name2}
  • 문자열 길이 가 져 오기: ${#varable_name}
  • 하위 문자열 추출: expr index $string char_name
  • 3) 배열
  • 정의: arr_name=(val1 val2)
  • 사용: $arr_name[$index]
  • 배열 의 모든 요 소 를 가 져 옵 니 다: ${arr_name[@]}
  • 배열 길이 가 져 오기:
  • length=${#arr_name[@]}
    or:
    length=${#arr_name[*]}
    
  • 배열 의 특정한 요소 길 이 를 가 져 옵 니 다: length=${#arr_name[$index]}
  • 4) 전달 매개 변수
    사용 자 는 명령 을 통 해 스 크 립 트 에 파 라 메 터 를 전달 할 수 있 고 함수 호출 도 함수 체 내 에 파 라 메 터 를 전달 할 수 있 으 며 둘 은 같 습 니 다.$n 스 크 립 트 의 n 번 째 매개 변수 (n > = 1) 를 나타 낸다. 예 를 들 어 $1 는 첫 번 째 매개 변수 이 고 $0 는 스 크 립 트 의 이름 이나 함수 의 이름 을 나타 낸다. 다음은 몇 개의 특수 문자 이다.
    매개 변수
    설명 하 다.
    $#
    스 크 립 트 매개 변수 개수 전달
    $*
    스 크 립 트 가 전달 하 는 인 자 를 단일 문자열 로 표시 합 니 다.
    $$
    스 크 립 트 가 실행 중인 현재 프로 세 스 ID
    $!
    백그라운드 에서 실행 중인 마지막 프로 세 스 ID
    $@
    $* 와 같 음
    $?
    마지막 명령 종료 상 태 를 표시 합 니 다. 0 은 success 를 표시 합 니 다.
    5) 프로 세 스 제어 if:
    if condition
    then
    ...
    fi
    

    if-else:
    if condition
    then
    ...
    else
    ...
    fi
    

    if else-if else:
    if condition1
    then
    ...
    elif condition2
    then
    ...
    else
    ...
    fi
    

    for:
    for var in val1 val2
    do
    
    done 
    

    while:
    while condition
    do
    ...
    done
    

    케이스: C 언어 와 유사 한 switch case
    
    case   in
      1)
    ...
    ;;
      2)
    ...
    ;;
    esac
    

    6) 함수 형식 은 다음 과 같다.
    function func_name(...)
    {
    	...
    	return $res
    }
    

    호출:
    func_name $val1 $val2
    

    7) 조건 부 테스트
  • 수치 테스트: -eq 는 같 지 않 고 -ne 는 같 지 않 으 며 -gt 는 크 고 -ge 는 같 으 며 -lt 는 작 으 며 -le 는 같 지 않다
  • .
  • 문자열 테스트: = 는 같 지 않 습 니 다. != 문자열 의 길 이 는 0 이 고 -z $string 문자열 의 길 이 는 0
  • 이 아 닙 니 다.
  • 파일 테스트:
  • 매개 변수
    설명 하 다.
    -e $filename
    파일 존재
    -r $filename
    파일 이 존재 하고 읽 을 수 있 습 니 다.
    -w $filename
    파일 이 존재 하고 쓸 수 있 습 니 다.
    -x $filename
    파일 이 존재 하고 실행 가능
    -s $filename
    파일 이 비어 있 지 않 고 존재 합 니 다.
    -d $filename
    파일 이 존재 하고 디 렉 터 리 입 니 다.
    -f $filename
    파일 이 존재 하고 일반 파일, i. e., regular files 입 니 다.
    -c $filename
    파일 이 존재 하고 문자 장치 파일 입 니 다.
    -b $filename
    파일 이 존재 하고 블록 장치 파일 입 니 다.
    흔 한 장면 수요
    1) 명령 매개 변수 배열 을 옮 겨 다 닐 때 매개 변수 문자열 에 빈 칸 이 있 습 니 다. 이 블 로 그 를 참고 하 십시오.
    for ((i = 0; i < ${#ARGS[@]}; i++))
    do
        echo "${ARGS[$i]}"
    done
    

    ——————————
    뒤에 쓰다
    bash 셸 의 일부 명령 이나 세부 적 인 용법 을 잘 기억 하지 못 하 더 라 도 사용 할 때 찾 아 보면 됩 니 다. 많이 쓰 면 익숙 하지만 기본 적 인 절차 에 익숙해 져 야 합 니 다.

    좋은 웹페이지 즐겨찾기