&& 체인 명령: B가 0이 아닌 종료 상태를 반환하면 C가 A && C 내에서 실행됩니까? [복사]

&& 체인 명령: B가 0이 아닌 종료 상태를 반환하면 C가 A && C 내에서 실행됩니까? [복사]
A && B ; C
  • A는 종료 상태 0을 반환합니다.

  • B는 0이 아닌 종료 상태를 반환합니다.

  • C가 실행되면 종료 상태 0이 반환됩니다.

따라서 다음 두 가지 상황 중 어떤 상황이 발생합니까(두 경우 모두 A는 당연히 실행됩니다).

  1. Bash는 B와 C를 실행합니다.

  2. Bash는 B를 실행하지만 C는 실행하지 않습니다.

이 질문을 확장하여 대안(1 또는 2)의 동작을 허용하도록 체인을 어떻게 수정할 수 있습니까?

편집하다:

나는 && and;의 의미에 대해 묻는 것이 아닙니다. .

나는 A와 B가 어쨌든 처형될 것이라는 것을 알고 있습니다. 나머지 경우는 B가 0이 아닌 종료 상태를 반환하기 때문에 C를 무시하거나 B를 건너뛰고 자체 장점에 따라 C를 다시 평가하는 것입니다.

답변1

A && B ; C

A는 종료 상태 0을 반환합니다.

이 경우 next 가 실행되며, 및 B의 종료값에 관계없이 실행 됩니다 .ABC

시퀀스 그룹은 (A && B) ; Cas가 아니라 와 같습니다 A && (B ; C). 필요한 경우 중괄호 또는 괄호(하위 쉘)를 사용하여 그룹화를 추가할 수 있습니다.

나머지 경우는 B가 0이 아닌 종료 상태를 반환하므로 B와 C가 모두 무시된다는 것입니다.

이는 별로 의미가 없습니다. B 자신의 종료 상태에 따라 B를 무시할 수 없습니다.

아니면 B를 건너뛰고 C의 장점을 다시 평가해 보세요.

A가 false(0이 아닌) 상태를 반환하는 경우에만 B를 건너뛰고, true(0) 상태를 반환하는 경우 건너뛰지 않습니다.

숫자 진리값에 대한 쉘의 이해는 0이 거짓인 C 언어와 비교하여 반대입니다.

A가 false(0이 아닌) 상태를 반환하면 B는 실행되지 않지만 C는 계속 실행됩니다.

관련 정보