Linux Bash에서 이중 앰퍼샌드 (&&)와 세미콜론 (;)의 차이점은 무엇입니까?


112

Linux Bash 에서 앰퍼샌드와 세미콜론의 차이점은 무엇입니까 ?

예를 들면

$ command1 && command2

vs

$ command1; command2


9
주제를 벗어난 것과 관련하여, 지난번에 확인했을 때 bash는 여전히 프로그래밍 언어 였지만 이전에는 틀렸고 말린 과일 사탕 일 수 있습니다.
Steve K

특정 행동에 대한 질문이나 특정 작업을 수행하는 올바른 방법에 대한 질문은 확실히 주제에 관한 것입니다. 이것은 "언어의 구문에 대한 질문"의 회색 범주에 속하는데, 제가 생각하는 한 "프로그래밍"질문이 아닙니다.
Etan Reisner 2015

4
bash는 어떤면에서는 건조하고 어떤면에서는 달콤합니다. 하루가 끝나면 아주 쾌적하고 소화가 잘됩니다. 그러나 아기에게서 쉽게 훔칠 수는 없습니다.
code_monk

답변:


138

&&연산자는 부울 AND 연산자 : 왼쪽이 0이 아닌 종료 상태, 운영자 반환 상태가 반환되며 오른쪽합니다 (단락)를 평가하지 않는 경우, 그렇지 않으면 오른쪽을 평가하고 종료 상태를 반환 . 이것은 일반적으로 성공적으로 command2실행 된 경우에만 실행되도록 하는 데 사용됩니다 command1.

;에 관계없이 첫 번째 성공 여부의 두 번째 명령을 실행할 수 있도록 토큰은, 명령을 분리한다.


6
이중 &&앰퍼샌드 &가 bash 의 단일 앰퍼샌드 와 다른 가요?
Charlie Parker

16
@CharlieParker &는 명령이 백그라운드에서 실행되도록합니다. "백그라운드에서 실행"은 "다른 명령이 성공한 경우에만 다음 명령 실행"과 매우 다릅니다.
cdhowie

command2는 command1 만 실행하여 종료 상태가 0을 반환 했습니다. 이는 성공적으로 완료되었음을 의미합니다.
Nik

33

command1 && command2

command1 && command2실행 command2command1성공적으로 끝날 경우에만 실행됩니다. Unix 전문 용어에서 이는 종료 코드 / 반환 코드 가 0 임을 의미 합니다.

command1; command2

command1; command2실행 command2command1순차적으로 실행 됩니다. 명령의 성공 여부는 중요하지 않습니다.


6

전자는 AND단락 평가를 사용 하는 간단한 논리 이고 후자는 단순히 두 명령을 구분합니다.

실제로 일어나는 일은 첫 번째 프로그램이 0이 아닌 종료 코드를 반환 할 때 전체 AND가 평가되고 FALSE두 번째 명령이 실행되지 않는다는 것입니다. 나중에는 단순히 두 가지를 순서대로 실행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.