programing

Bash/sh - & 및 ;의 차이

newstyles 2023. 4. 29. 08:55

Bash/sh - & 및 ;의 차이

주로 사용합니다.;한 줄에 두 개 이상의 명령어를 결합하는 것을 선호하지만, 일부 사람들은&&차이가 있습니까?예를들면,cd ~; cd -그리고.cd ~ && cd -같은 것을 만드는 것 같습니다.어떤 버전이 더 휴대성이 좋습니까, 예를 들어 안드로이드의 셸 등과 같은 bash-subset에서 지원될 것입니까?

이전 명령이 실패한 경우;두 번째가 실행됩니다.

하지만 함께&&두 번째는 실행되지 않습니다.

이것은 작업 간의 "지루한" 논리적 "AND" 피연산자입니다.

사용 중&&왜냐하면 오래전에 근처 컴퓨터에서

root# pwd
/
root# cd /tnp/test; rm -rf *
cd: /tnp/test: No such file or directory
...
... and after a while ...
...   
^C

하지만 도움이 안 됐어요...;)

cd /tnp/test && rm -rf *안전합니다...;)

cmd1 && cmd2,cmd2다음과 같은 경우에만 실행됩니다.cmd1success(0)입니다.

cmd1 ; cmd2,cmd2어떤 경우에도 실행됩니다.

두 구성 모두 POSIX 호환 셸의 일부입니다.

&&이전 명령이 상태 0으로 종료된 경우 다음 명령을 실행합니다.반대의 경우에는||즉, 이전 명령이 0이 아닌 상태로 종료되는 경우 실행됩니다.;항상 실행됩니다.

이전 명령이 정상적으로 종료되었는지 여부에 따라 특정 작업을 수행해야 할 때 매우 유용합니다.

명령은 다음으로 구분됩니다.;완료 상태에 관계없이 순차적으로 실행됩니다.

와 함께&&두 번째 명령은 첫 번째 명령이 성공적으로 완료된 경우에만 실행됩니다(종료 상태가 0인 경우).

이것은 아래의 bashman 페이지에서 다룹니다.Lists저는 유닉스 계열 셸이 이 두 운영자를 모두 지원할 것으로 예상하지만 안드로이드 셸에 대해서는 구체적으로 알지 못합니다.

&&조건부 실행을 허용하는 동안;항상 두 번째 명령이 실행됩니다.

예를 들어.command1 && command2,command2다음과 같은 경우에만 실행됩니다.command1으로 종료되었습니다.exit 0에 있는 동안 신호 전달이 모두 잘 되었습니다.command1 ; command2두 번째 명령은 결과에 관계없이 항상 실행됩니다.command1.

논리적 AND(배시)입니다.Bash에는 논리적 AND에 대한 단락 평가가 있습니다.이 관용구는 다음을 더 간단하게 표현할 수 있는 방법입니다.


cmd1;rc=$?
if [ $rc -eq 0 ]; then
   cmd2
fi

반면 ; 버전은 다음과 같습니다.


cmd1
cmd2

언급URL : https://stackoverflow.com/questions/6152659/bash-sh-difference-between-and