명령 실행 방식
셸은 다음과 같은 명령 실행 방식을 제공
- 단일 명령 실행
- 명령 파이프라인 실행
- 명령 리스트 실행
- 복합 명령 실행
단일 명령 실행
- 단일 명령은 단어와 공백의 반복이며 마지막에 제어연산자(control operator)로 끝난다.
제어연산자
- 줄바꿈 문자(newline)
- 파이프라인 연산자
||&
- 리스트 연산자
;&||&&,
- case 조건 종료 연산자
;;;&;;&
- 그룹실행 연산자
()
단일 명령의 실행 구조
- 변수 할당 또는 리디렉션이 있는 경우 나중에 실행하기 위해 임시 저장
- 변수 할당 또는 리디렉션이 아닌 단어는 확장
- 확장 후 첫번째 단어를 명령어로, 나머지 단어들을 인수로 인식
명령 파이프라인 실행
명령 파이프라인은 명령이 다음 4가지 구분자로 연결된 것을 말한다.
||&
명령 리스트 실행
명령 리스트는 명령 또는 명령 파이프라인이 다음 4가지 구분자로 연결된 것을 말한다.
;- 실행결과와 상관없이 명령을 순차적 실행
&- 실행결과와 상관없이 명령을 순차적으로 백드라운드 실행
&&- 실행결과가 0일 때(성공)만 다음 명령 실행. 실행결과가 0이 아니면 중지
||- 실행결과가 0이 아닐 때(실패)만 다음 명령 실행. 실행결과가 0이면 중지.
복합 실행
복합 실행은 하나 이상의 명령 리스트가 다음과 같은 구성으로 조합되어 실행되는 것을 말한다
- 루프 실행
- 조건 실행
- 그룹 실행
루프 실행
untilwhilefor
조건 실행
ifcaseselect(( ))[[ ]]
그룹 실행
( list )
- 서브셸을 생성하고 모든 명령을 서브셸에서 실행
{ list; }
- 서브셸을 생성하지 않고 모든 명령을 현재의 셸에서 실행
- 마지막에 리스트내의 명령어와
}기호를 구분하기 위해 반드시;기호 필요 (;기호가 없으면}기호가 리스트로 인식될 수 있음)