|| 무슨 뜻인가요? 배쉬에서 그것은 무엇을 의미합니까? [복사]

|| 무슨 뜻인가요? 배쉬에서 그것은 무엇을 의미합니까? [복사]

중복된 게시물이라면 사과드립니다. 누군가가 이미 이 질문에 질문/답변을 했는지 확인하기 위해 검색을 시도했지만 아무것도 찾지 못했습니다.

||Bash에서 그게 무슨 뜻인가요? 예를 들어, 드라이버 문제를 해결하는 단계를 조사하는 동안 다음 명령을 발견했습니다.

modprobe -q vmxnet3 && echo "vmxnet3 installed" || echo "vmxnet3 not installed"

첫 번째 부분은 modprobe를 쿼리하고 "vmxnet3 설치됨"이라는 응답을 반환하는 것입니다(성공적인 반환 코드를 받은 경우). 하지만... 마지막 부분은 무엇을 하고 있나요?

답변1

||OR 연산자입니다. 왼쪽 명령이 오류를 반환하는 경우에만 오른쪽 명령을 실행합니다. 바라보다&& 및 || 연산자의 사용은 혼란스럽습니다..

귀하의 예가 bash에 적합하지 않다고 생각합니다. 오른쪽 섹션에는 명령이 ||없습니다 echo. (이 문제는 해결되었습니다.)

답변2

마치 카니발 &&처럼||제어 연산자:

  • &&다음 명령문의 실행을 나타냅니다.~하지 않는 한앞의 문은 성공적으로 실행됩니다(종료 코드 0이 반환됨).

  • ||다음 명령문의 실행을 나타냅니다.~하지 않는 한이전 문이 실패했습니다(0이 아닌 종료 코드를 반환함).

다른 제어 연산자는 다음과 같습니다:

  • &이전 문이 백그라운드에서 실행됨을 나타냅니다.

  • ;이전 문을 실행하고 완료 후 다음 문을 계속 실행함을 나타냅니다.

  • |이전 명령문이 실행되고 그 표준 출력이 다음 명령문의 표준 입력에 연결됨을 나타냅니다.

결합 &&하고||

&&||if-then-else를 대체하기 위해 결합 할 수 있습니다. 고려하다:

if some_command
then
    echo yes
else
    echo no
fi

위의 내용은 다음과 같습니다.

some_command && echo yes || echo no

명령이 실패할 경우 두 가지가 다르기 때문에 동일하지 않고 "유사하다"고 말합니다 echo yes. 명령이 실패 하면 echo yes(0이 아닌 반환 코드로 종료) echo no명령이 실행됩니다. 이 버전에서는 이런 일이 발생하지 않습니다 if-then-else-fi. echo그러나 터미널에 쓰기 오류가 있는 경우에만 명령이 실패합니다. 따라서 이 차이는 중요하지 않으며 &&and ||형식이 단축키로 자주 사용됩니다.

답변3

이는 "또는" 조건입니다.

간단한 예를 들어 보겠습니다.

 cmd1 || cmd2

cmd1이 성공하면(즉, 종료 코드 0) cmd2가 실행되지 않습니다. cmd2는 cmd1이 실패한 경우에만 실행됩니다.

이것이 종료 코드를 반환하는 것이 중요한 이유 중 하나입니다.

그런데 이 기능은 매우 오래된 UNIX 쉘에 존재합니다. 이전 sh에는 IF 문이 없었기 때문입니다. 물론 이것은 csh가 존재하기 전의 일이었습니다.

관련 정보