명령 실행 방식

셸은 다음과 같은 명령 실행 방식을 제공

  1. 단일 명령 실행
  2. 명령 파이프라인 실행
  3. 명령 리스트 실행
  4. 복합 명령 실행

단일 명령 실행

  • 단일 명령은 단어와 공백의 반복이며 마지막에 제어연산자(control operator)로 끝난다.

제어연산자

  • 줄바꿈 문자(newline)
  • 파이프라인 연산자
    • |
    • |&
  • 리스트 연산자
    • ;
    • &
    • ||
    • &&,
  • case 조건 종료 연산자
    • ;;
    • ;&
    • ;;&
  • 그룹실행 연산자
    • (
    • )

단일 명령의 실행 구조

  1. 변수 할당 또는 리디렉션이 있는 경우 나중에 실행하기 위해 임시 저장
  2. 변수 할당 또는 리디렉션이 아닌 단어는 확장
  3. 확장 후 첫번째 단어를 명령어로, 나머지 단어들을 인수로 인식

명령 파이프라인 실행

명령 파이프라인은 명령이 다음 4가지 구분자로 연결된 것을 말한다.

  • |
  • |&

명령 리스트 실행

명령 리스트는 명령 또는 명령 파이프라인이 다음 4가지 구분자로 연결된 것을 말한다.

  • ;
    • 실행결과와 상관없이 명령을 순차적 실행
  • &
    • 실행결과와 상관없이 명령을 순차적으로 백드라운드 실행
  • &&
    • 실행결과가 0일 때(성공)만 다음 명령 실행. 실행결과가 0이 아니면 중지
  • ||
    • 실행결과가 0이 아닐 때(실패)만 다음 명령 실행. 실행결과가 0이면 중지.

복합 실행

복합 실행은 하나 이상의 명령 리스트가 다음과 같은 구성으로 조합되어 실행되는 것을 말한다

  1. 루프 실행
  2. 조건 실행
  3. 그룹 실행

루프 실행

  1. until
  2. while
  3. for

조건 실행

  1. if
  2. case
  3. select
  4. (( ))
  5. [[ ]]

그룹 실행

  1. ( list )
  • 서브셸을 생성하고 모든 명령을 서브셸에서 실행
  1. { list; }
  • 서브셸을 생성하지 않고 모든 명령을 현재의 셸에서 실행
  • 마지막에 리스트내의 명령어와 } 기호를 구분하기 위해 반드시 ; 기호 필요 ( ; 기호가 없으면 } 기호가 리스트로 인식될 수 있음)