무엇 예 "-e 설정"?
다음 스크립트 :
#!/bin/bash
set -e
command 1
command 2
...
명령문의 결과가 사실이 아닌 경우 스크립트 플러스 설정 -e의 시작 부분에서 문장 문이 떠들썩한 파티를 알려줍니다, 당신은 종료한다.
어떤 역할 "-e 설정"?
-
(1) 당신이 오류를 확인하려면 -e 도움을 사용하여;
-
(2) 오류가 증가가 심각한 오류를 야기하고, 오류가 폐기되기 전에 있어야 급증 방지;
- (3)의 가독성을 높이기 위하여,이 사용될 수
set -o errexit
있으며, 행set -e
동일;
무슨 "로 설정 -e"단점?
-
(1) 확인할 수 없습니다
$?
명령문이 0을 반환 실행되지 않으면, 배쉬는 다음 스크립트 모양의 체크 코드를 수행 할 수 없기 때문에, :#!/bin/bash set -e ... command <== 执行的语句不是返回0,bash将不会往下执行if语句 if [ $? -eq 0 ];then echo "command failed"; exit 1; fi
-
다음 (2)의 코드는, 예를 들면 실행할 수 없습니다 하여금
#!/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/ ...
이 라인 하둡 명령 논리는 간단하다 명확하고 HDFS에 새 디렉토리를 만들고, 나중에 사용하기 위해 로컬 디렉토리에 파일을 밀어 넣습니다. 혼자이 라인은 수행 존재하지 않는 디렉토리를 삭제 제안 이외에, 명령 줄을 실행하고 문제는 파일이 여전히 지정된 장소에 푸시됩니다 없다.
그러나 첫 번째 스크립트의 실행,하지만 실패에서 철수하고, 전체 프로그램은 심각한 결과를 초래 스크립트 종료를 호출에 이끌 때. 그 이유는이 값이 캡처 "-e 설정"스크립트의 앞에, HDFS 아직이 디렉토리,이 라인은 255 반환 RMR 아니라, 스크립트의 직접적인 결과는 종료됩니다.
설명 ⚠️ :
"-e 설정"눈에 보이는 세트, 스크립트 개발 프로세스에 도움이 될 수 있으며, 개발이 완료되면, 특히, 보안 위험을 매장 할 수있다 후자 스크립트를 업그레이드 할 수 있습니다.