내가 아는 &
한 백그라운드에서 명령을 실행하기위한 것입니다.
&
사용 예 :tar -czf file.tar.gz dirname &
하지만 &&
어때요? (이 예제를보십시오 : /server/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188 )
내가 아는 &
한 백그라운드에서 명령을 실행하기위한 것입니다.
&
사용 예 :tar -czf file.tar.gz dirname &
하지만 &&
어때요? (이 예제를보십시오 : /server/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188 )
답변:
또한 ||
논리 또는 논리가 있으며 ;
이전 명령에서 발생한 일을 신경 쓰지 않는 구분 기호 이기도 합니다.
$ 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 매뉴얼 의 명령 목록 에서 확인할 수 있습니다 .
명령 줄-목적은
&&
무엇입니까?
셸에서 볼 때
$ command one && command two
의도는 &&
첫 번째 명령이 성공한 경우에만 뒤에 오는 명령을 실행하는 것 입니다. 이것은 Posix 쉘의 관용적이며 Bash에서만 찾을 수는 없습니다.
첫 번째 프로세스가 실패하면 두 번째 프로세스가 실행되지 않도록합니다.
내가 "의도"라는 단어를 사용했음을 알 수 있습니다. 그 이유는 그만한 이유입니다. 모든 프로그램이 동일한 동작을 갖는 것은 아니므로, 이것이 작동하려면 프로그램이 "실패"로 간주하는 내용과 설명서 및 필요한 경우 소스 코드를 읽고 프로그램을 처리하는 방법을 이해해야합니다.
프로그램 은 종료시 신호 를 반환합니다 . 성공적으로 종료되면 0을, 그렇지 않으면 0보다 커야합니다. 이를 통해 프로세스 간 통신량이 제한됩니다.
은 &&
라고도 AND_IF
에서 POSIX 쉘 문법 의 일부 and_or
목록 도 포함 명령, ||
있는 OR_IF
비슷한 의미를 가진.
설명서에서 인용 된 문법 기호 :
%token AND_IF OR_IF DSEMI /* '&&' '||' ';;' */
그리고 Grammar (문서에서 인용)는 AND_IF
s ( &&
) 및 / 또는 OR_IF
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
첫 번째 경우, false는 다음 상태로 종료되는 명령입니다. 1
$ false
$ echo $?
1
이는 echo foo
작동하지 않는 것을 의미 합니다 (즉, 단락 echo foo
). 그런 다음 명령 echo bar
이 실행됩니다.
두 번째 경우, true는 코드로 종료됩니다. 0
$ true
$ echo $?
0
따라서 echo foo
실행되지 않은 다음 echo bar
실행됩니다.
'&&'의 일반적인 사용법은 autotools로 소프트웨어를 컴파일하는 것입니다. 예를 들면 다음과 같습니다.
./configure --prefix=/usr && make && sudo make install
기본적으로 configure가 성공하면 컴파일을 위해 make가 실행되고, 성공하면 make가 root로 실행되어 프로그램을 설치합니다. 나는 일이 잘 될 것이라고 확신 할 때 이것을 사용하며, 진행 상황을 '모니터'하지 않고 stackoverflow를 보는 것과 같은 다른 중요한 일을 할 수 있습니다.
때때로 나는 정말로 쫓겨 난다 ...
tar xf package.tar.gz && ( cd package; ./configure && make && sudo make install ) && rm package -rf
예를 들어 처음부터 리눅스를 만들 때이 작업을 수행합니다.
set -o errexit
경우 Bash를 선호 합니다.
&&
문자열을 함께 명령합니다. 후속 명령은 이전 명령이 성공한 경우에만 실행됩니다.
마찬가지로 ||
앞의 명령이 실패 할 경우 연속 명령을 실행할 수 있습니다.
Bash Shell Programming을 참조하십시오 .
첫 번째 문이 성공적으로 끝나면 두 번째 문을 실행해야합니다. if 문처럼 :
if (1 == 1 && 2 == 2)
echo "test;"
첫 번째는 1 == 1이면 시도하고, 참이면 2 == 2인지 확인합니다.
&&
if
테스트가 bash에서 어떻게 작동 하는지에 대한 훌륭한 통찰력 입니다. 나는 그것을 일련의 비교 명령처럼 생각하지 않았으며, 실패했을 때 깨졌습니다. 그래서 당신은 내
||
명령 중 하나가 성공할 때까지 명령을 체인으로 연결 eei || leu || uie || echo prout3 || echo "never executed"
command_1 && command_2
: command_1이 성공적으로 실행 된 경우에만 command_2를 실행하십시오.
command_1 || command_2
: command_1이 성공적으로 실행되지 않은 경우에만 command_2를 실행하십시오.
에서, '가'조건 등 주류 프로그래밍 언어에서 실행되는 방법과 유사한 온도 if (condition_1 && condition_2){...}
condition_2 condition_1 경우 생략한다 false
이상에서 if (condition_1 || condition_2){...}
condition_1 경우 condition_2 생략한다 true
. 참조 : 코딩에 사용하는 것과 동일한 트릭입니다. :)
####################### && or (Logical AND) ######################
first_command="1"
two_command="2"
if [[ ($first_command == 1) && ($two_command == 2)]];then
echo "Equal"
fi
프로그램이 명령을 확인하면 프로그램은 종료 코드라는 숫자를 작성하고, 두 조건이 모두 true이면 종료 코드는 0이고, 그렇지 않으면 종료 코드는 양수입니다. 종료 코드가 영 (0)으로 생성 된 경우 Equal을 표시 할 때만 두 조건이 모두 참임을 의미합니다.
if [[ ($first_command == "1") && ($two_command == "2") ]];then echo "Equal"; fi
false && echo "Will not be printed"
.