Learn the Shell Script
기본 문법
변수
- 변수를 선언할때 ‘=’ 양 옆의 공백이 없어야 한다.
변수명=: NULL로 초기화된 변수 선언unset 변수명: 변수를 제거readonly 변수명: 상수로 생성set: 사용하고 있는 변수들의 리스트
특별한 변수 할당 방법
${X:-Y}: x에 값이 있으면 그대로 출력, 그렇지 않으면 Y값을 사용${X:=Y}: 위와 동일 하게 실행. Y가 사용되면 X에 Y값을 할당${X:?에러메세지}: X에 값이 ㅇ벗으면 에러메세지와 함께 종료
변수 타입선업(declare)
declare -r 변수명: 읽기 전용 변수 선언declare -i 변수명: 정수형 변수 선언declare -a 변수명: 배열 변수 선언declare -f: 스크립트 안에 정의된 모든 함수들을 보여준다declare -f 함수명: 해당 함수 내용을 보여준다.declare -x 변수명: 환경변수로 export
let
- 산술 연산을 쉽게 할 수 있는 명령어
- ex)
sh let a=2*3 - ex)
sh let a+=1
- ex)
$#
number of params
ex)
./program param01 param02
- param01은 스크립트내에서
$1로 불러올 수 있다. - 마찬가지 방법으로 program name과 param02는
$0,%2로 불러올 수 있다. $\*로$0을 제외한 모든 파라미터들을 문자열로 가져올 수 있다.
read
- 사용자로 부터 변수를 입력 받을 때 사용한다.
- ex)
sh read 변수명
- ex)
제어문
||: 앞의 명령어 실행이 실패 했을 때, 뒤의 명령어가 실행되도록 한다.- ex)
sh Run Command1 || echo 실패 >> log.txt
- ex)
&&: 앞의 명령어 실행이 성공 했을 때, 뒤의 명령어가 실행되도록 한다.- ex)
sh Run Command2 && echo 성공 >> log.txt
- ex)
반복문
while [ Condition ]: condition이 true이면 반복 실행until [ Condition ]: condition이 false이면 반복 실행for 변수 in 값; do ~~~ donefor ((초기값;조건식;증감));do ~~~ done
비교 옵션
문자열
-n: 문자열 사이즈가 0이 아닌지 확인- ex)
sh [ -n $stringName ]
- ex)
-z: 문자열 사이즈가 0인지 확인- ex)
sh [ -z $stringName ]
- ex)
==: 같은 문자열인지 확인!=: 다른 문자열인지 확인
숫자 대소 관계
[ A -ge B ]: A보다 B가 크거나 같은지 확인[ A -gt B ]: A보다 B가 큰지 확인[ A -le B ]: A보다 B가 작거나 같은지 확인[ A -lt B ]: A보다 B가 작은지 확인[ A -eq B ]: A와 B가 같은지 확인
파일 체크
[ -r filename ]: 읽기 가능한 파일인지 확인[ -w filename ]: 쓰기 가능한 파일인지 확인[ -x filename ]: 실행 가능한 파일인지 확인[ -s filename ]: 파일 크기가 0이 아닌지 확인[ -d filename ]: 디렉토리 인지 확인[ -f filename ]: 디렉토리가 아닌, 파일인지 확인[ -h filename ]: 링크파일인지 확인
조건문의 결합
[ A -a B ]: and 조건 연산[ A -o B ]: or 조건 연산