스크립트 프로그램의 실행
- 텍스트 파일로 작성
- 운영체제가 전용 인터프리터 프로세스를 실행
- 인터프리터 프로세스가 파일을 한 줄씩 읽어서 표현된 대로 실행
인터프리터의 실행
1. 인터프리터 직접 실행
2. 대상 프로그램을 명령어처럼 사용
- 대상 프로그램에 실행 가능 모드 추가 ex) chmod +x 파일
- 인터프리터 종류는 프로그램 속의 첫 줄에 지정 ex) #! /bin/bash
- OS 커널에서 대상 파일을 읽는데 텍스트 파일이면 첫 줄에 지정된 인터프리터를 메모리에 적재, 실행하면서 지정된 프로그램 파일명을 인수로 전달
쉘 스크립트 작성 및 실행
1. vi 편집기로 쉘 스크립트 파일 작성
2-1. Bash로 실행
- Bash로 실행할 때에는 실행가능 모드 여부와 상관없음 ex) bash hello
2-2. 명령어처럼 실행
- 작성된 파일을 실행가능 하도록 변경한 후 명령어처럼 실행
ex) chmod +x hello -> ./hello
- PATH 환경 변수에 hello 파일이 있는 디렉터리를 추가해 놓으면 “./” 없이 그냥 hello 명령으로 실행 가능 ex) export PATH=/home/stud2217/week9/test3
명령열
- ;을 이용하여 한 줄에 여러 명령들을 나열 ex) date; who; ps
Sub-shell
- 자식 셸을 생성하여 명령들을 처리 ex) (date; who; ps)
명령열과 Sub-shell의 비교
- date; who; ps > output1 과 (date; who; ps) > output2 의 차이는 output1에는 ps 명령의 결과만 저장되어 있고, output2에는 date부터 ps까지 차례대로 실행 된 결과가 저장되어 있다.
Meta Character 정리
> : 표준 출력을 파일에 저장
>> : 표준 출력을 파일에 추가 저장
< : 표준 입력을 파일에서 읽기
<< “특정 문자” : 특정 문자로 지정한 내용이 들어올 때까지 명령을 실행
| : 앞 프로세스의 출력을 다음 프로세스의 입력으로 전달
; : Shell 명령어를 순서대로 구분하여 나열
& : background 실행
|| : 이전의 명령이 실패하면 실행하도록 하는 조건부 실행
&& : 이전의 명령이 성공하면 실행하도록 하는 조건부 실행
(…) : 명령어들을 하나의 그룹으로 처리
* : 0개 이상의 문자와 일치하는 파일들로 치환
? : 단일 문자와 일치하는 파일들을 치환
[...] : 대괄호 사이의 어떤 단일 문자와 일치하는 파일들로 치환
‘...’ : 따옴표 구간을 하나로 처리 (특수문자 처리 없음)
`command` or $(comand) // command의 출력에 의해서 대치
~ : 홈 디렉터리
$ : Shell 변수 값을 적용, $변수명 또는 ${변수명}
! : 히스토리 치환
\ : Shell의 메타문자 앞에 붙어서 메타문자의 특수 의미를 제거
“...” : 따옴표 구간을 하나로 처리 ($,`,\만 특수 문자 처리)
# : 주석 역할
종료 코드
1. Exit으로 지정된 종료 코드 값
- exit 0 <- 성공적으로 종료
- exit 2 <- 0이 아닌 값은 모두 실패로 인식
2. 지정된 종료 코드가 없으면 그 속의 마지막 실행 명령의 종료코드
표준 입력 읽기
- read: 한 줄의 내용씩 읽어 들이는 명령어
- 옵션 -p: 프롬프트 출력
미리 정의된 특수 용도의 변수들
$0 : shell script 이름
$1-$9 : 인수(파라미터) 1부터 9까지
$# : 인수 개수
$* : 인수 전체 (한 개의 문자열로 취급)
$@ : 인수 전체 (배열로 취급)
$? : 최근 실행한 명령의 종료 코드
$$ : 자신의 프로세스 번호
정수 연산의 여러 가지 표현 방법
1. (( name - expression )) // 권장
2. name =`expr expression` or name =$(expr expression) // 인용부호 안에서도 사용 가능
cf) 명령어와 수식 사이에 공백 조건문에서 조건을 표현하는 수식: ((expression)), 변수 값에서 $ 생략 가능
if문
1. 표현 문법
if command
then
statements
fi
2. 의미
- Command 부분의 명령이 성공하면 (종료코드가 0이면), Statements 부분에 표현된 명령들을 실행
3. 들여쓰기는 안 해도 되지만 가독성이 좋게 구현
4. Command가 명령열이면 마지막 명령의 종료 코드 적용
if then elif 표현
if command1; then
statements1
elif command2; then
statements2
else
statements3
fi
While과 Until 문
While: 조건이 true 이면 반복
while command
do
statements
done
Until: 조건이 false 이면 true가 될 때까지 반복
until command
do
statements
done
'대학교 2학년 1학기 > 리눅스 프로그래밍' 카테고리의 다른 글
사용자 관리 (0) | 2022.05.20 |
---|---|
쉘 스크립트 프로그래밍 (2) (0) | 2022.05.19 |
파일 시스템과 디스크 관리하기 (0) | 2022.05.01 |
프로세스 관리하기 (0) | 2022.05.01 |
파일 접근 권한 관리하기 (0) | 2022.04.04 |