답변:
&&
연산자 사용
cmd1 && cmd2 && cmd3
shellscripting에서 &&
와 ||
연산자 C. 된 논리 연산자의 최적화 된 구현 후 모델링 &&
수단 및 조작자 및 ||
수단 OR. 유닉스는 C와 밀접하게 관련되어 있으며 C에서는 논리 연산자의 두 번째 피연산자가 결과가 첫 번째 피연산자로부터 이미 알려진 경우 평가되지 않습니다. 예를 들면 "false && x"
이다 false
어떤을 위해 x
, 그래서 평가를 할 필요가 없습니다 x
(특히 x
함수 호출됩니다) 비슷합니다 "true || x"
. 이를 단락 시맨틱 이라고도 합니다.
유닉스에서는 명령의 반환 값을 "성공적인 완료"진실 값으로 해석하는 것이 일반적입니다. 종료 코드 0은 true
(성공), 0이 아닌 의미 false
(실패)를 의미 합니다. 따라서 첫 번째 명령이 cmd1 && cmd2
리턴 되면 "false"
(제로가 아닌 종료 상태, 실패를 나타냄) 복합 명령의 상태는 실패입니다. 따라서 cmd1 && cmd2
"execute cmd1
, ANDNN (실패하지 않은 경우) " 으로 해석 cmd2
됩니다. 질문에서 기본적으로 원하는 것은 무엇입니까?
OR :와 마찬가지로 cmd1 || cmd2
"execute cmd1
, OR IF failure "로 해석 될 수 있습니다 cmd2
.
팁 : 더 긴 체인을 사용하려면 스크립트를 &&
넣는 것이 set -e
좋습니다. 기본적으로 세미콜론 은 몇 가지 특수한 경우 ;
로로 바뀝니다 &&
.
||
A || B
[단락] 논리 A OR B와 동일 합니다. A || B
인 성공을 때 A
이었다 성공 , 또는 때 A
이었다 실패 했지만 B
이었다 성공 ; 하고 A || B
있다 실패 할 때 A
이었다 실패를 하고 B
있었다 failure
. 와 마찬가지로 &&
논리 AND를 따릅니다.
;
기본적으로 일반 규칙 (또는 줄 바꿈)이 수행하는 작업입니다. 대략 말하기 로 set -e
변 합니다. [기본값]은 다음과 같이 말합니다 : run , no-matter-what run . ;
&&
set +e
A; B
A
B