Ubuntu "command && command"및 "command; command"에서이 두 가지 사용법을 봅니다.
예 :apt-get update && apt-get upgrade
내가 사용하면 무엇이 다릅니 apt-get update; apt-get upgrade
까?
나는이 특정 사용법을 요구하지 않지만 일반적 으로이 두 사용법의 차이점은 무엇입니까?
||
있습니다.
Ubuntu "command && command"및 "command; command"에서이 두 가지 사용법을 봅니다.
예 :apt-get update && apt-get upgrade
내가 사용하면 무엇이 다릅니 apt-get update; apt-get upgrade
까?
나는이 특정 사용법을 요구하지 않지만 일반적 으로이 두 사용법의 차이점은 무엇입니까?
||
있습니다.
답변:
&&
논리 연산자입니다. ;
간단한 시퀀싱입니다.
에서 cmd1 && cmd2
CMD1 성공적인 리턴 코드로 종료하는 경우, CMD2에만 실행됩니다.
반면에 cmd1; cmd2
cmd2는 cmd1의 종료 상태에 관계없이 실행됩니다 (스크립트 또는 기타 오류로 인해 쉘이 종료되도록 설정하지 않은 경우).
관련 메모 cmd1 || cmd2
에서 ||
'OR'논리 연산자를 사용하여 cmd2는 cmd1이 실패한 경우에만 실행됩니다 (0이 아닌 종료 코드를 리턴 함).
이러한 논리 연산자는 기본 if 문 대신 스크립트에서 사용되기도합니다. 예를 들어
if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi
...보다 간결하게 달성 할 수 있습니다 :
[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"
command1 && command2
command2 는command1
종료 상태가 0 ( true )을리턴하는경우에만 실행됩니다. 즉, 실행command1
하고 성공하면을 실행하십시오command2
.
command1 ; command2
command1 과 command2 는 모두 관계없이 실행됩니다. 세미콜론을 사용하면 한 줄에 많은 명령을 입력 할 수 있습니다.
관련 :
command1 || command2
Command2를이 경우 실행되고, 경우에만, 지령 1은 0이 아닌 종료 상태를 반환합니다. 즉,command1
성공적으로 실행하거나 실행하십시오command2
.
&&
운영자:
$ rm /tmp/filename && echo "File deleted"
;
운영자:
$ echo "foo" ; echo "bar"
||
운영자:
$ cat /tmp/filename 2>/dev/null || echo "Failed to open file"
& (simple sequencing), && (conditional AND) and || (conditional OR)
.