A && B ; C
A는 종료 상태 0을 반환합니다.
B는 0이 아닌 종료 상태를 반환합니다.
C가 실행되면 종료 상태 0이 반환됩니다.
따라서 다음 두 가지 상황 중 어떤 상황이 발생합니까(두 경우 모두 A는 당연히 실행됩니다).
Bash는 B와 C를 실행합니다.
Bash는 B를 실행하지만 C는 실행하지 않습니다.
이 질문을 확장하여 대안(1 또는 2)의 동작을 허용하도록 체인을 어떻게 수정할 수 있습니까?
편집하다:
나는 && and;의 의미에 대해 묻는 것이 아닙니다. .
나는 A와 B가 어쨌든 처형될 것이라는 것을 알고 있습니다. 나머지 경우는 B가 0이 아닌 종료 상태를 반환하기 때문에 C를 무시하거나 B를 건너뛰고 자체 장점에 따라 C를 다시 평가하는 것입니다.
답변1
A && B ; C
A는 종료 상태 0을 반환합니다.
이 경우 next 가 실행되며, 및 B
의 종료값에 관계없이 실행 됩니다 .A
B
C
시퀀스 그룹은 (A && B) ; C
as가 아니라 와 같습니다 A && (B ; C)
. 필요한 경우 중괄호 또는 괄호(하위 쉘)를 사용하여 그룹화를 추가할 수 있습니다.
나머지 경우는 B가 0이 아닌 종료 상태를 반환하므로 B와 C가 모두 무시된다는 것입니다.
이는 별로 의미가 없습니다. B 자신의 종료 상태에 따라 B를 무시할 수 없습니다.
아니면 B를 건너뛰고 C의 장점을 다시 평가해 보세요.
A가 false(0이 아닌) 상태를 반환하는 경우에만 B를 건너뛰고, true(0) 상태를 반환하는 경우 건너뛰지 않습니다.
숫자 진리값에 대한 쉘의 이해는 0이 거짓인 C 언어와 비교하여 반대입니다.
A가 false(0이 아닌) 상태를 반환하면 B는 실행되지 않지만 C는 계속 실행됩니다.