source

셸 명령에서 "&&"의 목적은 무엇입니까?

nicesource 2023. 5. 24. 22:12
반응형

셸 명령에서 "&&"의 목적은 무엇입니까?

로는 가아는한을 사용하는 것으로 알고 있습니다.&명령을 백그라운드에서 실행한 후.

& 용도:tar -czf file.tar.gz dirname &

하지만 어때요?&&(계속)

은 또한 가다은, 신또한당도 있습니다.|| 또는 또한 이나또거, 한리적입니다.;이전 명령에 무슨 일이 일어났는지 신경 쓰지 않는 구분자일 뿐입니다.

$ false || echo "Oops, fail"
Oops, fail

$ true || echo "Will not be printed"
$  

$ true && echo "Things went well"
Things went well

$ false && echo "Will not be printed"
$

$ false ; echo "This will always run"
This will always run

이에 대한 자세한 내용은 Bash 매뉴얼의 명령 목록에서 확인할 수 있습니다.

&&성공적으로 할 수 . 이 연결된 상태로 . 그래서 체인으로 표시되는 경향이 있습니다.do_something && do_something_else_that_depended_on_something.

- 명줄가 - 목은무(으)로 표시되는 입니까?&&?

껍데기 속에서, 당신이 볼 때.

$ command one && command two

의도는 다음 명령을 실행하는 것입니다.&&첫 번째 명령이 성공한 경우에만 가능합니다.이것은 포식스 조개의 관용어이며, 바시에서만 발견되는 것은 아닙니다.

첫 번째 공정이 실패할 경우 두 번째 공정이 실행되지 않도록 하겠다는 것입니다.

여러분은 제가 "의도"라는 단어를 사용했다는 것을 알아차릴지도 모릅니다 - 그것은 정당한 이유가 있습니다.모든 프로그램이 동일한 동작을 하는 것은 아니므로 이 작업이 작동하려면 프로그램이 "실패"로 간주하는 항목과 문서를 읽고 필요한 경우 소스 코드를 읽는 방법을 이해해야 합니다.

셸은 반환 값을 참의 경우 0으로 간주하고, 거짓의 경우 다른 양수로 간주합니다.

프로그램이 종료 시 신호를 반환합니다.성공적으로 종료하면 0을 반환해야 하며 그렇지 않으면 0보다 커야 합니다.이를 통해 프로세스 간의 통신량이 제한됩니다.

&&를 라고합다라고 합니다.AND_IF명령 목록의 일부인 posix문법에서, 또한 포함합니다.||은 것은그입니다.OR_IF유사한 의미를 갖는.

문서에서 인용한 문법 기호:

%token  AND_IF    OR_IF    DSEMI
/*      '&&'      '||'     ';;'    */

그리고 문법(문서에서 인용하기도 함), 이것은 다음과 같은 숫자가 있음을 보여줍니다.AND_IFs(s)&& ) 및/는또OR_IFs(s)||으)로 (으)로 수 .and_or재귀적으로 정의됨):

and_or           :                         pipeline
                 | and_or AND_IF linebreak pipeline
                 | and_or OR_IF  linebreak pipeline

두 측정 시스템 모두 우선 순위가 같고 왼쪽에서 오른쪽으로 평가됩니다(왼쪽 연관성 있음).의사들이 말하는 것처럼:

안 안AND-OR로 구분된 하나 입니다."&&"그리고."||".

AND-OR로 입니다.';'그리고.'&'으로 그고선 종료됨로으에 의해 됩니다.';','&'또는.

"&&"그리고."||"동등한 우선 순위를 가져야 하며 왼쪽 연관성으로 평가되어야 합니다.예를 들어, 다음 두 명령은 모두 표준 출력에만 막대를 씁니다.

$ false && echo foo || echo bar
$ true || echo foo && echo bar
  1. 첫 번째 경우, false는 다음과 같은 상태로 종료되는 명령입니다.1

    $ false
    $ echo $?
    1
    

    즉, 단락 회로가 실행되지 않음을 의미합니다.echo foo) 그런 다음 명령을 실행합니다.echo bar실행됩니다.

  2. 두 번째 경우, 코드가 다음과 같이 참 종료됩니다.0

    $ true
    $ echo $?
    0
    

    그므로러.echo foo실되지 않경우은행경이 됩니다.echo bar실행됩니다.

&&'의 매우 일반적인 사용법은 자동 도구로 소프트웨어를 컴파일하는 것입니다.예:

./configure --prefix=/usr && make && sudo make install

기본적으로 구성이 성공하면 make를 실행하여 컴파일하고 성공하면 make를 루트로 실행하여 프로그램을 설치합니다.저는 모든 것이 잘 될 것이라고 확신할 때 이 기능을 사용하며, 진행 상황을 '모니터링'하는 것이 아니라 스택 오버플로를 확인하는 것과 같은 다른 중요한 작업을 수행할 수 있습니다.

가끔은 정말 넋이 나갈 때가...

tar xf package.tar.gz && ( cd package; ./configure && make && sudo make install ) && rm package -rf

예를 들어 처음부터 리눅스를 만들 때 이 작업을 수행합니다.

&&문자열 명령을 함께 사용합니다.후속 명령은 이전 명령이 성공한 경우에만 실행됩니다.

유하게사,||선행 명령이 실패할 경우 후속 명령을 실행할 수 있습니다.

Bash프로그래밍을 참조하십시오.

첫 번째 문장이 성공적으로 끝나면 두 번째 문장을 실행하는 것입니다.if 문처럼:

 if (1 == 1 && 2 == 2)
   echo "test;"

먼저 1==1이면 시도합니다.이 값이 참이면 2==2인지 확인합니다.

예를 참조하십시오.

mkdir test && echo "Something" > test/file

은 디렉터리를 .test그런 다음 성공적인 경우에만 내부에 파일을 생성합니다.

따라서 단계 중 하나가 실패할 경우 일련의 단계를 중단할 수 있습니다.

command_1 && command_2됩니다. command_1은 command_2의 명령입니다.

command_1 || command_2실행되지 않은 됩니다. command_2는 command_1과 같은 명령입니다.

치주류프로언밍어서조 'if'에서 'if' 조건이 주류 입니다.if (condition_1 && condition_2){...}이 condition_1인 됩니다.false 그고리로.if (condition_1 || condition_2){...}이 condition_1인 됩니다.true보세요, 그것은 당신이 코딩할 때 사용하는 것과 같은 속임수입니다 :)

####################### && or (Logical AND) ######################
first_command="1"
two_command="2"

if [[ ($first_command == 1) && ($two_command == 2)]];then
 echo "Equal"
fi

프로그램에서 if 명령을 확인하면 종료 코드라는 번호가 생성됩니다. 두 조건이 모두 참이면 종료 코드가 0이고, 그렇지 않으면 종료 코드가 양수입니다.종료 코드가 0으로 생성되어 두 조건이 모두 참임을 의미하는 경우에만 Equal을 표시합니다.

언급URL : https://stackoverflow.com/questions/4510640/what-is-the-purpose-of-in-a-shell-command

반응형