shell script란
unix,mac 등에서 사용하는 명령어 + 프로그래밍 가능한 스크립트 언어
bash shell
리눅스 표준 shell
shell scirpt는 언제 쓰나?
시스템 관련 작업에 사용!
확장자 : sh
스크립트 처음에 #!/bin/bash로 셸 스크립트임을 알려주기
실행 : chmod +x로 실행 권한 주고 ./파일명 또는 sh 파일명
# 변수에 타입 없음.
# 지역,전역 등 scope 있음.
# 함수 있음.
name="leemr" # 띄어 쓰기 주의
echo "my name is $name" # 변수 값을 사용할 때는 $기호를 앞에 붙임
function hello(){ # 함수 선언시 function 키워드 사용
echo "my name is $1" # 위치 매개 변수 $1,$2,..
echo "my hobby is $2"
}
hello "leemr" "skate" # 인자는 띄어쓰기로 구분
# (전역 변수, 지역 변수)
# 보통 프로그래밍과 같음.
name = "leemr"
function hello(){
local name="park"
echo "my name is $name" # park가 출력됨
}
hello
# 1부터 10까지 출력하기
# for 변수명 in {초기값..최종값..증가값} / while도 있음.
for num in {1..10} #python like
do
echo $num;
done
# if then else fi는 필수. elif [ 조건식 ] 은 옵션
A=1
B=2
if [ $A = $B ] #대괄호와 조건식 사이에 무조건 띄어쓰기 해야 함..
then echo "A = B"
else echo "A != B"
fi
# let이라는 built in 명령을 사용해야 수식 계산이 쉬움
A=3
B=5
let sum=A+B
let mul=A*B
let div=A/B
let rem=A%B
echo $sum $mul $div $rem
# let을 안 쓰면 아래처럼 해야 함. 괄호 안 치면 동작도 안 함.
sum=$((A + B))
# 환경 변수 : 시스템에서 사용하고 있는 변수
# HOME,PATH,PWD,USER,UID 등이 있다. (대문자로 사용해야 함)
echo $HOME
echo $PATH
문자열 연산자
'-z' 연산자 : 문자열 길이가 0이면 참
'-n' 연산자 : 문자열 길이가 0이 아니면 참
비교,논리 연산자
보통 프로그래밍 언어들과 비슷.
비교 :+ eq,gt,lt 등 있음.
논리 : -a(&&), -o(||) 등 있음.
디렉터리 연산자
-d : 변수 타입이 디렉터리이면 참
-e : 변수 타입이 디렉터리이거나 파일이면 참
파일 연산자
파일 속성(유형,권한)을 검사하는 연산자
-f, -L, -r,w,x, -O, -G 등 있음.