답변1
실행 중에 절전 모드가 종료되면 절전 모드가 실패할 수 있습니다.
$ sleep 2
$ echo "$?"
0
$ sleep 2
^C
$ echo "$?"
130
sleep은 외부 실행 파일이므로 fork 또는 exec 호출도 실패할 수 있으며 이로 인해 bash는 오류 코드 >0을 생성하게 됩니다.
답변2
a; b
두 번째 명령은 항상 첫 번째 명령 다음에 실행되며 a && b
첫 번째 명령이 성공한 경우, 즉 첫 번째 명령이 상태 0을 반환하는 경우에만 실행됩니다.
sleep
신호에 의해 종료되지 않는 한 항상 상태 0을 반환합니다. 이 경우 상태는 128 + 신호 번호입니다. ( sleep
명령이 존재하지 않거나 리소스 부족으로 프로그램을 시작할 수 없는 경우 상태가 126 또는 127일 수도 있지만 이러한 상황이 발생할 가능성은 거의 없습니다.)
;
따라서 수면이 중단되면 원하는 일에 따라 또는 를 사용해야 합니다 .&&
sleep 10; echo hello
10초 후에 메시지를 인쇄합니다(sleep
신호에 의해 종료되면 더 적음).sleep 10 && echo hello
10초 후에 메시지를 인쇄하지만,sleep
신호에 의해 종료되면 아무것도 인쇄하지 않습니다.
답변3
절전 모드 실패 가능성이 매우 작더라도 다양한 이유로 모든 명령이 실패할 수 있다고 가정해야 합니다.
( sleep 10 ; echo "hello world" ) &
백그라운드 절전을 의미하고 절전 프로세스 후에 에코를 수행하지만 절전에 실패하면 에코가 어쨌든 실행됩니다. 전체 설명 보기
sleep 10 && echo "hello world" &
즉, 에코가 발생하기 전에 절전 모드가 끝날 때까지 기다려야 합니다. 에코가 실패하면 프로세스가 중지되지만 전체 명령도 백그라운드에서 실행됩니다.전체 설명 보기
결론적으로
첫 번째 구문은 쉘 스크립팅입니다. 즉, 명령을 개별적으로 목록으로 처리합니다.
두 번째 옵션은 AND에 &&를 사용하므로 첫 번째 명령이 실패할 때 이를 사용하면 두 번째 명령이 실행되지 않습니다.
오류를 처리할 때의 동작이 다를 뿐입니다.