&&는 논리 AND입니다.
&&는 논리 AND 를 표현하는 방법입니다 . 즉, 양쪽이 모두 참인 경우에만 전체 표현식이 참임을 의미합니다. 논리적으로, 전체 진술 (P & Q)은 P와 Q가 모두 참일 때만 참이라고합니다.
그 결과 컴퓨터는 일반적으로 P & Q를 단락 평가로 취급 합니다. 따라서 P와 Q가 모두 참이면 전체 문장 만 참이므로 P가 거짓이면 문장 Q는 평가되지 않습니다 . 기본적으로 컴퓨터는 게으르고 (효율적), Q가없는 경우 Q를 평가하지 않아도됩니다. 이것은 논리 OR의 참이기도합니다. 이전 링크를 참조하십시오.
Bash에서 &&의 세 가지 맥락 :
1) 명령 종료 상태에서 단락 평가 사용 :
모든 명령에는 종료 상태가 있습니다. 명령에 오류가 있으면 종료 상태가 0이 아닙니다. 따라서 종료 상태가 0이 아니고 &&를 사용하여 명령을 명령문으로 연결하는 경우, 이전 명령의 종료 상태가 0 (참)이 아닌 경우 이후 명령이 평가 (실행)되지 않습니다. 이것은 단락 평가 때문입니다. 당신이 가지고 있다면 :
P && Q
P가 참이 아닌 경우 Q는 실행되지 않습니다 (P가 0 이외의 상태로 종료되면 참이 아닙니다). 다음과 같습니다 :
./configure && make
configure에 오류가 있으면 make가 실행되지 않습니다. 따라서 기본적으로 if 문에 다음과 같이 작성하는 방법이됩니다.
if ./configure ; then
make
fi
대부분의 상황에서 0은 false이지만 종료 상태에 관한 것은 아닙니다.
2) &&는 Bash의 내장 [[]] 테스트 명령에서 사용할 수 있습니다.
&& bash [[]]의 내장 테스트 명령 안에서도 명령을 결합하는 것과 유사한 방식으로 표현식을 결합 할 수 있습니다. &&의 두 피연산자 (측면)가 모두 true 인 경우에만 전체 테스트 작업이 적용됩니다.
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
$ a가 2와 5 사이의 정수인지 여부를 말하는 방법입니다 (2와 5는 제외).
3) 산술 평가 :
마지막으로 &&는 산술 평가에서 논리 AND로 사용될 수 있습니다. 경우 모두 0이 아닌있는 다음의 번호 (논리 AND), 그것은 다른 일을 반환, 0 반환
kbrandt@desktop:~/$ echo $((1 & 1))
1
kbrandt@desktop:~/$ echo $((0 && 1))
0