내가 아는 &
한 백그라운드에서 명령을 실행하기위한 것입니다.
&
사용 예 :tar -czf file.tar.gz dirname &
하지만 &&
어때요? (이 예제를보십시오 : /server/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188 )
답변
&&
이전 명령이 성공적으로 완료되었는지 여부에 따라 무언가를 수행 할 수 있습니다 do_something && do_something_else_that_depended_on_something
.
답변
또한 ||
논리 또는 논리가 있으며 ;
이전 명령에서 발생한 일을 신경 쓰지 않는 구분 기호 이기도 합니다.
$ 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에서만 찾을 수는 없습니다.
첫 번째 프로세스가 실패하면 두 번째 프로세스가 실행되지 않도록합니다.
내가 “의도”라는 단어를 사용했음을 알 수 있습니다. 그 이유는 그만한 이유입니다. 모든 프로그램이 동일한 동작을 갖는 것은 아니므로, 이것이 작동하려면 프로그램이 “실패”로 간주하는 내용과 설명서 및 필요한 경우 소스 코드를 읽고 프로그램을 처리하는 방법을 이해해야합니다.
쉘은 true의 경우 리턴 값 0을, false의 다른 양수를 고려
프로그램 은 종료시 신호 를 반환합니다 . 성공적으로 종료되면 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
예를 들어 처음부터 리눅스를 만들 때이 작업을 수행합니다.
답변
&&
문자열을 함께 명령합니다. 후속 명령은 이전 명령이 성공한 경우에만 실행됩니다.
마찬가지로 ||
앞의 명령이 실패 할 경우 연속 명령을 실행할 수 있습니다.
Bash Shell Programming을 참조하십시오 .
답변
예를보십시오 :
mkdir test && echo "Something" > test/file
쉘은 디렉토리를 생성하려고 시도하고 test
, 성공한 경우에만 그 안에 파일을 생성하려고 시도합니다.
따라서 단계 중 하나가 실패하면 일련의 단계를 중단 할 수 있습니다.
답변
첫 번째 문이 성공적으로 끝나면 두 번째 문을 실행해야합니다. if 문처럼 :
if (1 == 1 && 2 == 2)
echo "test;"
첫 번째는 1 == 1이면 시도하고, 참이면 2 == 2인지 확인합니다.