Bash 기초 -- 순서 집행 명령

2848 단어 매일 조금씩shell
우선, Bash 에서 가장 작은 집행 단 위 는 pipeline 이 어야 합 니 다. Bash 는 pipelines 를 조합 하여 순서, 조건, 순환 등 구 조 를 만 드 는 것 을 지원 합 니 다.모든 pipeline 은 자신의 subshell 에서 실 행 됩 니 다. 자신의 PID 가 있 습 니 다. 그러나 편 의 를 위해 순서, 조건, 순환 구 조 를 소개 할 때 굳이 pipeline 으로 구성 되 었 음 을 강조 하지 않 고 명령 (command) 을 기본 단위 로 합 니 다.
순서 구조
쓰다구 분 된 순서 구조
$ command1;command2

으로분 리 된 명령 을 순서대로 집행 하 다.Shell 은 모든 명령 이 종 료 될 때 까지 순서대로 기다 릴 것 입 니 다. 즉, 모든 명령 이 자신의 subshell 에서 실 행 됩 니 다.셸 은 이전 명령 이 실 행 된 후에 다음 명령 을 실행 합 니 다. 이전 명령 의 exit status 가 얼마 든 간 에.return status 는 마지막 으로 실 행 된 명령 의 exit status 입 니 다.
;줄 바 꿈 문자 로 대체 할 수 있 고 여러 줄 바 꿈 문자 로 대체 할 수 있 습 니 다.그러나 여러 개의 줄 바 꿈 부 호 는 한 개 에 만 해당 합 니 다.즉, 다음 과 같은 형식 으로 위의 구조 와 등가 이다.
command1
command2
command1

command2

아래 의 구조 도 합 법 적 이 고 효과 도 같다.하지만 여기구분자 가 아 닌 comand 1 의 종지부 역할 을 합 니 다.
command1;

command2

그래서 아래 구조 에 문법 오류 가 있 습 니 다.
command1
; # syntax error near unexpected token `;'

command2

& 비동기 명령
& 명령 의 종지부 로 도 사용 할 수 있 고 명령 시퀀스 의 구분자 로 도 사용 할 수 있 습 니 다.
$ command&

Shell 은 subshell 에서 명령 을 비동기 로 실행 합 니 다.pipeline 에서 셸 명령 은 자신의 subshell 에서 실 행 됩 니 다. 자신의 PID 가 있다 는 점 에서 비동기 실행 명령 과 동기 실행 명령 은 같 습 니 다.비동기 실행 의 차이 점 은 셸 이 명령 이 완 료 될 때 까지 기다 리 지 않 고 바로 돌아 오 는 것 입 니 다. return status 는 0 입 니 다. 명령 은 배경 에서 실 행 됩 니 다.
구분자 로 삼다
command1&command2

셸 은 command 1 을 먼저 실행 하지만 command 1 의 완성 을 기다 리 지 않 고 command 2 를 즉시 실행 합 니 다.따라서 command 1 이 command 2 보다 먼저 실행 되 지만 command 1 이 반드시 command 2 보다 먼저 완성 되 는 것 은 아니다.이 구조 에서 셸 은 command 2 에 대한 실행 을 동기 화 합 니 다.그래서 전체 구조의 return status 는 command 2 에 의 해 결정 된다.
구분자
command1&command2&

셸 은 command 1 을 먼저 실행 하지만 command 1 의 완성 을 기다 리 지 않 고 command 2 를 즉시 실행 합 니 다. 셸 은 command 2 에 대한 실행 도 비동기 입 니 다.전체 구조의 return status 는 0. command 1 이 command 2 보다 먼저 실행 되 지만 완 성 된 우선 순 서 는 확실 하지 않 습 니 다.
논리
& & 와 | | | 의 역할 과;구분 순서 로 실행 되 는 명령 과 유사 하 며, 시퀀스 에 있 는 명령 은 모두 동기 화 되 어 실 행 됩 니 다.그리고다른 것 은분 리 된 명령 은 이전 실행 결과 와 상 관 없 이 다음 명령 이 실 행 됩 니 다.그리고
command1 && command2

command 1 의 exit status 가 0 일 때 만 command 2 를 실행 합 니 다.
command1 || command2

command 1 의 exit status 가 0 이 아 닐 때 만 command 2 를 실행 합 니 다.
이 두 서열 의 return status 는 마지막 으로 실 행 된 명령 의 exit status 에 의 해 결정 된다.

좋은 웹페이지 즐겨찾기