셸 의 set 명령
3606 단어 bash
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 -e
과 set +e
이런 형식 으로 옵션 을 직접 지정 하 는 것 이다.set -o errexit
와 set +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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
성공할 때까지 명령 실행최근에 유용한 간단한 BASH 패턴: Run command every time it fails until it doesn't fail. 예시 작은 배치로 수십만 개의 레코드를 내보내야 하는 장기 실행 작업이 있었습니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.