셸 의 set 명령

3606 단어 bash
set 명령 프로필
set 명령 은 셸 에서 초보 자 들 이 접촉 이 적 지만 유용 한 명령 입 니 다.set 명령 은 셸 해석 기의 내 장 된 명령 으로 셸 해석 기의 속성 을 설정 하여 셸 해석 기의 행동 을 제어 할 수 있 습 니 다.
➜ ~/programming/test  $ type set
set is a shell builtin

set 명령 사용
옵션 없 이 set 명령 실행
set 명령 을 실행 할 때 현재 셸 의 모든 변 수 를 출력 합 니 다. 출력 형식 은 셸 스 크 립 트 의 변수 할당 형식 과 같 습 니 다. name=value따라서 set 명령 의 출력 은 stdin 의 입력 으로 직접 할 수 있 습 니 다.
기본 문법
set 명령 의 기본 문법 은 다음 과 같 습 니 다 (bash 에서 온 man 매 뉴 얼).
       set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
       set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]

set 옵션 을 통 해 셸 의 서로 다른 특성 을 스위치 합 니 다. 모든 특성 은 하나의 옵션 에 대응 합 니 다.모든 특성 에는 두 가지 설정 방식 이 있 습 니 다.
  • 하 나 는 set -eset +e 이런 형식 으로 옵션 을 직접 지정 하 는 것 이다.
  • 다른 하 나 는 set -o errexitset +o errexit 이라는 형식 으로 o 라 는 옵션 을 통 해 옵션 이름 을 지정 하 는 것 이다.

  • 나 는 네가 반드시 옵션 이 + 번 을 사용 하 는 지 아니면 - 번 을 사용 하 는 지 에 대해 매우 궁금 하 다 고 생각한다.set 명령 에서 옵션 앞 에 - 번 호 를 따라 이 옵션 을 열 고 + 이 옵션 을 닫 는 것 을 표시 합 니 다.
    옵션 소개
    -o
    실행 set -o 은 현재 set 옵션 설정 상황 을 출력 합 니 다:
    ~/programming/test$ set -o
    allexport       off
    braceexpand     on
    emacs           on
    errexit         off
    errtrace        off
    functrace       off
    hashall         on
    histexpand      on
    history         on
    ignoreeof       off
    interactive-comments    on
    keyword         off
    monitor         on
    noclobber       off
    noexec          off
    noglob          off
    nolog           off
    notify          off
    nounset         off
    onecmd          off
    physical        off
    pipefail        off
    posix           off
    privileged      off
    verbose         off
    vi              off
    xtrace          off

    +o
    실행 set +o 도 현재 set 옵션 을 출력 하 는 설정 상황 입 니 다. 출력 형식 은 일련의 set 명령 일 뿐 입 니 다.이 출력 형식 은 현재 set 설정 항목 을 다시 만 들 때 사용 합 니 다.
    ~/programming/test$ set +o
    set +o allexport
    set -o braceexpand
    set -o emacs
    set +o errexit
    set +o errtrace
    set +o functrace
    set -o hashall
    set -o histexpand
    set -o history
    set +o ignoreeof
    set -o interactive-comments
    set +o keyword
    set -o monitor
    set +o noclobber
    set +o noexec
    set +o noglob
    set +o nolog
    set +o notify
    set +o nounset
    set +o onecmd
    set +o physical
    set +o pipefail
    set +o posix
    set +o privileged
    set +o verbose
    set +o vi
    set +o xtrace

    -e or -o errexit
    이 옵션 을 설정 하면 명령 이 실 패 했 을 때 셸 은 즉시 종 료 됩 니 다.
    -n or -o noexec
    이 옵션 을 설정 하면 셸 은 명령 을 읽 지만 실행 하지 않 습 니 다.이 옵션 을 사용 하면 셸 스 크 립 트 에 문법 오류 가 있 는 지 확인 할 수 있 습 니 다.
    -u or -o unset
    이 옵션 을 설정 한 후 셸 이 값 이 설정 되 지 않 은 변 수 를 확장 하려 면 셸 은 stderr 에 정 보 를 출력 한 다음 즉시 종료 해 야 합 니 다.그러나 대화 식 셸 은 물 러 나 서 는 안 된다.
    -x or -o xtrace
    이 옵션 을 설정 한 후 실행 할 명령 마다 셸 은 명령 을 확장 한 후 (매개 변수 확장) 명령 을 실행 하기 전에 trace 를 stderr 로 출력 합 니 다.
    -o pipefail
    이 옵션 은 파이프 의 반환 값 에 영향 을 줄 수 있 습 니 다.기본 적 인 상황 에서 한 파이프 의 반환 값 은 마지막 명령 의 반환 값 입 니 다. 예 를 들 어 cmda | cmdb | cmdc 이 파이프 의 반환 값 은 cmdc 명령 의 반환 값 에 의 해 결 정 됩 니 다.pipefail 옵션 을 지정 하면 파이프 의 반환 값 은 마지막 실패 한 명령 에 의 해 결 정 됩 니 다. 명령 이 실패 하면 0 이 아 닌 값 으로 돌아 간 다 는 뜻 입 니 다.모든 명령 이 성공 하면 성공 으로 돌아간다.
    예시
    #!/bin/bash
    
    set -o xtrace
    set -o errexit  #                     。
    
    echo "Before"
    ls filenoexists  # ls       
    echo "After"

    훨씬
    본 고 는 set 명령 의 일반적인 부분 만 소개 하고 더 많은 옵션 은 공식 문서 나 bash 의 man 매 뉴 얼 을 참고 할 수 있 습 니 다.공식 문서 주 소 는:
    http://pubs.opengroup.org/onlinepubs/009695399/utilities/set.html

    좋은 웹페이지 즐겨찾기