쉘 스크립트
* 쉘을 사용해서 프로그래밍을 할 수 있음
* 서버 작업 자동화 및 운영 (DevOps)을 위해 기본적으로는 익혀둘 필요가 있음
* 쉘 명령어를 기본으로 하되, 몇 가지 문법이 추가된 형태
* 시스템 프로그래밍에서 꼭 익히는 내용 중 하나
기본 문법
* 쉘 스크림트는 파일로 작성 후 파일을 실행
* 파일의 가장 위의 첫 라인은 "#!/bin/bash"로 시작
* 쉘 스크립트 파일은 실행 권한을 가지고 있어야 한다
* 일반적으로 '파일이름.sh'와 같은 형태로 파일 이름을 작성한다
주석
* # 기호로 시작하는 라인은 주석처리이다
변수
* 선언
- 변수명 = 데이터
- 변수명 = 데이터 사이에 띄어쓰기는 허용되지 않음
* 사용
- $변수명 으로 사용됨
리스트 변수(배열)
* 선언
- 변수명 = (테이터1 테이터2 테이터3 …)
* 사용
- ${변수명[인덱스번호]}
사전에 정의된 지역 변수
$$ : 쉘의 프로세스 번호
$0 : 쉘스크립트 이름
$1 ~ $9 : 명령줄 인수
$* : 모든 명령줄 인수리스트
$# : 인수의 개수
$? : 최근 실행한 명령어의 종료 값
- 0 (성공), 1 ~ 125 (에러),
- 126 (파일이 실행가능하지 않음),
- 128 ~ 255 (시그널 발생)
연산자
* expr : 숫자 계산
* expr를 사용하는 경우 역작은 따옴표(')를 사용해야 함 (작은 따옴표가 아니다)
* 연산자 *와 괄호() 앞에는 역슬래시()와 같이 사용
* 연산자와 숫자, 변수, 기호 사이에는 space를 넣어야 한다
조건문 문법
* 기본 if 구문
- 명령문을 꼭 탭으로 띄워야 하는 것은 아니다 (then과 fi안에만 있으면 됨)
if [조건]
then
명령문
fi
조건
* 조건 작성이 다른 프로그래밍 언어와 달리 가독성이 현저히 떨어진다
* 필요할 때마다 참조하면 된다
문자 비교
문자1 == 문자2 # 문자1과 문자2가 일치
문자1 != 문자2 # 문자1과 문자2가 일치하지 않음
-z 문자 # 문자가 null 이면 참
-n 문자 # 문자가 null 이 아니면 참
수치비교
값1 eq 값2 : 값이 같음 (equal)
값1 ne 값2 : 값이 같이 않음 (not equal)
값1 lt 값2 : 값1이 값2보다 작음 (less than)
값1 le 값2 : 값1이 값2보다 작거나 같음 (less or equal)
값1 gt 값2 : 값1이 값2보다 큼 (greater than)
값1 ge 값2 : 값1이 값2보다 크거나 같음 (greater or equal)
파일 검사
e 파 일 명 # 파 일 이 존 재 하 면 참
d 파 일 명 # 파 일 이 디 렉 토 리 면 참
h 파 일 명 # 심 볼 릭 링 크 파 일
f 파 일 명 # 파 일 이 일 반 파 일 이 면 참
r 파 일 명 # 파 일 이 읽 기 가 능 이 면 참
s 파 일 명 # 파 일 크 기 가 0 이 아 니 면 참
u 파 일 명 # 파 일 이 s e t - u s e r - i d 가 설 정 되 면 참
w 파 일 명 # 파 일 이 쓰 기 가 능 상 태 이 면 참
x 파 일 명 # 파 일 이 실 행 가 능 상 태 이 면 참
논리 연산
조건1 -a 조건2 #AND
조건1 -o 조건2 #OR
조건1 && 조건2 # 양쪽 다 성립
조건1 || 조건2 # 한쪽 또는 양쪽 다 성립
!조건 # 조건이 성립하지 않음
true # 조건이 언제나 성립
false # 조건이 언제나 성립하지 않음
조건문 문법
* 기본 if/else 구문
if [조건]
then
명령문
else
명령문
fi
조건문 한줄에 작서하기
* if 구문 : if [ 조건 ]; then 명령문; fi
* if [ 뒤와, ] 앞에는 반드시 공백이 있어야 한다
* [] dptj &&, || <, > 연산자들이 에러가 나는 경우 [[ ]] 를 사용하면 정상 작동하는 경우가 있다
반복문 문법
* 기본 for 문법
for 변수 in 변수값1 변수값2 …
do
명령문
done
* 기본 while 구문
whild [ 조건문 ]
do
명령문
done
압축 명령 tar
* 리눅스에서는 여러 파일을 한 파일로 묶은 것을 아카이브(archive)라고 한다
- 파일 확장자는 .tar
* 리눅스에서 파일 압축은 두 단계로 진행된다
- 아카이브(archive)로 만든다
- gzip 프로그램을 사용해서 압축한다 + 파일 확장자는 .tar .gz이다
* 압축 명령어는 tar를 사용하되 옵션을 사용해서 gzip 기능을 사용한다
* 주요 옵션
x : 묶음을 해제
c : 파일을 묶음
v : 묶을/해제 과정을 화면에 표시
z : gunzip을 사용
f : 파일 이름을 지정
* 압축시 주로 사용하는 옵션
tar -cvzf [압축된 파일 이름] [압축할 파일이나 폴더명]
* 압축을 풀을 때 주로 사용하는 옵션
tar -xvzf [압축 해제할 압축 아카이브 이름]
* 쉘을 사용해서 프로그래밍을 할 수 있음
* 서버 작업 자동화 및 운영 (DevOps)을 위해 기본적으로는 익혀둘 필요가 있음
* 쉘 명령어를 기본으로 하되, 몇 가지 문법이 추가된 형태
* 시스템 프로그래밍에서 꼭 익히는 내용 중 하나
출처 : 제로베이스
'공부 Note > 시스템 프로그래밍' 카테고리의 다른 글
Chapter 08 시스템 프로그래밍 (2) (0) | 2022.02.07 |
---|---|
Chapter 08 시스템 프로그래밍 (1) (0) | 2022.02.07 |
Chapter 06 시그널 (0) | 2022.02.07 |
Chapter 05 프로세스간 커뮤니케이션 (0) | 2022.02.07 |
Chapter 04 시스템 프로그래밍 (4) (0) | 2022.02.07 |