이 명령을 사용하는 단계는 무엇입니까 ||

이 명령을 사용하는 단계는 무엇입니까 ||

참고: ABC는 명령입니다...

언어를 더 잘 이해할 수 있도록 이러한 명령의 단계 프로세스가 무엇인지 알려주십시오.

A || B ; C = If A fails then run B then C?
A ; B || C = Run A then B then C if (B fails... or is it if A fails?)?

내가 정말로 원하는 것은 다음과 같습니다(그러나 위의 단계를 이해하고 싶습니다).

A가 실패하면 B를 실행하고, A가 성공하면 B를 건너뛰고 C, d, e 등을 실행합니다. ("||", ";" 및/또는 "&&"를 사용하여 이 작업을 어떻게 수행합니까?)

이 링크에서 정보를 찾았지만 3개가 아닌 2개의 명령에 대한 단계만 표시됩니다...https://askubuntu.com/questions/334994/which-one-is-better-using-or-to-execute-multiple-commands-in-one-line

다른 링크가 질문에 대답하지 않는 이유:

그러면 다음에 4개의 명령을 연결해야 한다면 여기의 답변은 3개의 명령이 어떻게 작동하는지만 보여주기 때문에 새로운 질문을 하게 됩니다. – don_crissti26분 전

아니요, 다음 단계에서는 언어를 이해할 것이기 때문입니다 :). 주로 이것 때문에...: 명령과 스위치(?) "||" 순서대로(이 경우 명령 C)가 항상 명령(A)를 보고 있는지 아니면 명령(B)을 보고 있는지 명확하지 않습니다. ) ). 이것은 주로 누군가가 다음과 같이 말하여 혼란스럽기 때문입니다. A || B = A가 실패하면 B를 실행합니다. 다음 명령(C, D 등)도 A를 볼지 확실하지 않습니다 :) (음, 그렇게 보이는데, 언어를 몰라요..그래서 알아내야 해요).

답변1

A || B ; C

A가 0이 아닌 상태로 종료되면 B를 실행합니다. C 무조건 실행

A ; B || C

A를 실행합니다. 그런 다음 B를 실행합니다. B가 0이 아닌 상태로 종료되면 C를 실행합니다.


접선적으로 가 표시되는 경우가 있습니다 A && B || C. 이는 일반적으로 as 의 약어입니다 if A; then B; else C; fi. 그러나 한 가지 중요한 차이점이 있습니다.

A && B || C
  • A가 실패하면 C를 실행합니다.
  • A가 성공하면 B를 실행합니다.
    • B가 실패하면 C를 실행합니다.
if A; then B; else C; fi
  • A가 실패하면 C를 실행합니다.
  • A가 성공하면 B를 실행합니다.
    • B가 실패하면 C는 실행되지 않습니다.

데모:

$ (echo A; exit 0) && (echo B; exit 1) || (echo C; exit 2); echo $?
A
B
C
2     # <== the exit status of C

$ if (echo A; exit 0); then (echo B; exit 1); else (echo C; exit 2); fi; echo $?
A
B
1     # <== the exit status of B

답변2

간단한 테스트

(echo -n "hello" || echo -n "world") && echo "!"

"안녕하세요!"를 프로듀스하세요

또는 (진술 A를 거짓으로 만듭니다)

( false || echo -n "world") && echo "!"

"월드!"를 프로듀스하세요!

OR 연산자는 게으르므로 (A || B)에서 A가 참인 경우 True OR True == True 및 True OR False == True이므로 B는 평가되지 않습니다.

관련 정보