유 닉 스/리 눅 스 셸 스 크 립 트 의 "set - e"역할
다음 스 크 립 트:
#!/bin/bash
set -e
command 1
command 2
...
스 크 립 트 시작 에 set - e 를 추가 하면 이 문 구 는 bash 에 게 모든 문장의 실행 결과 가 true 가 아니라면 종료 해 야 한 다 는 것 을 알려 줍 니 다.
'set - e' 역할 이 뭐 예요?
set -o errexit
을 사용 할 수 있 는데 그 역할 은 set -e
과 같다.'set - e' 폐단 이 뭐 예요?
$?
. 실 행 된 문구 가 0 으로 돌아 가지 않 으 면 bash 는 검사 코드 를 실행 할 수 없습니다. 아래 스 크 립 트 와 같 습 니 다. #!/bin/bash
set -e
...
command <== 执行的语句不是返回0,bash将不会往下执行if语句
if [ $? -eq 0 ];then
echo "command failed";
exit 1;
fi
#!/bin/bash
set -e
...
/home/work/.../hadoop dfs -rmr /app/.../dir
/home/work/.../hadoop dfs -mkdir /app/.../dir
/home/work/.../hadoop dfs -put file_1 /app/.../dir/
...
이 몇 줄 의 hadop 명령 논 리 는 간단 합 니 다. hdfs 에서 디 렉 터 리 를 지우 고 새로 만 들 고 로 컬 파일 을 이 디 렉 터 리 로 전송 하여 나중에 사용 할 수 있 습 니 다.이 몇 줄 의 목록 을 꺼 내 명령 행 에서 실행 합 니 다. 삭제 할 디 렉 터 리 가 존재 하지 않 는 다 는 것 을 알 리 는 것 외 에 문제 가 없습니다. 파일 은 지정 한 곳 으로 보 내 집 니 다.그러나 이 스 크 립 트 를 처음 실 행 했 을 때 종료 에 실 패 했 고 이 스 크 립 트 를 호출 하 는 프로그램 이 전체적으로 종료 되 어 심각 한 결 과 를 초래 했다.hdfs 에 이 디 렉 터 리 가 없 기 때문에 rmr 이 줄 은 255 로 돌아 갑 니 다. 이 값 은 스 크 립 트 앞의 "set - e"에 의 해 포착 되 어 스 크 립 트 가 종 료 됩 니 다.설명 하 다.⚠️: 이 를 통 해 알 수 있 듯 이 'set - e' 를 설정 하면 스 크 립 트 개발 과정 에서 도움 이 될 수 있 고 개발 이 끝 난 후에 특히 후기 에 업 그 레이 드 될 수 있 는 스 크 립 트 는 안전 위험 을 묻 었 을 수 있 습 니 다.참고 문서
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.