글
쉘스크립트
쉘 프로그래밍 : 쉘에서 제공되는 프로그래밍 환경을 통한 프로그래밍
쉘 스크립트 : 쉘 프로그래밍을 통해서 생성한 파일 (스크립트 파일)
리눅스 실행 파일의 두 가지 형식
1. 바이너리 파일 : 컴파일해서 나온 실행파일 ex) ls , mv , ps
2. 쉘 스크립트 파일 : 텍스트 형태의 파일이지만 실행명령어들을 모아놓은 배치파일
ex) /etc/init.d/network , /etc/init.d/sshd
쉘 스크립트가 필요한 이유
- 서버 관리하기 위해 반드시 필수이며 많은 프로그램들이 쉘 스크립트 파일로 작성되어 있다.
쉘 스크립트 생성하기
- 파일 생성 후 실행권한으로 변경한다
- 꼭 실행권한이 있어야 되는건 아니지만 일반적으로 실행권한이 있어야 한다
- 파일의 확장자가 꼭 sh 로 끝나지 않아도 되지만 sh 로 끝나면 쉘 스크립트 파일임을 알 수 있다
변수
- 데이터를 저장하는 그릇
형식 : 변수병=값 <--- 변수와 값은 반드시 붙여서 써야한다
> 변수를 출력하는 방법 : echo $변수명
ex) # a=1
# echo $a
1
종료 코드 : 자식 프로세스가 끝나면 부모프로세스에게 전달해주는 값
성공 : 프로그램이 정상 종료 리턴값 0
실패 : 프로그램이 비정상 종료 리턴값 0 이외의 값
쉘 스크립트 안에는 실행 명령어가 들어간다
if 문에서 사용하는 정수 비교 연산자
일반 프로그래밍 언어 : 쉘 스크립트
i > j : [ $i -gt $j ]
i < j : [ $i -lt $j ]
i >= j : [ $i -ge $j ]
i <= j : [ $i -le $j ]
i == j : [ $i -eq $j ]
i != j : [ $i -ne $j ]
if 문에서 사용하는 문자열 비교 연산자
일반 프로그래밍 언어 : 쉘 스크립트
i == j : [ $i = $j ] : 같다
i != j : [ $i != $j ] : 같지 않다
[ -z $i ] : 변수의 값이 없을 경우 , 문자열의 길이 0
[ -n $i ] : 변수의 값이 있을 경우 , 문자열의 길이 1 이상
if 문에서 사용하는 파일 테스트
[ -f 일반파일]
[ -d 디렉토리]
[ -e 존재하는 파일]
[ -r 읽기권한]
[ -w 쓰기권한]
[ -x 실행권한]
case 문
형식 :
case 변수명 in
값1) 실행문1
:
:
값2) 실행문 2
:
:
*) 실행문 3
:
:
esac
명령행 인자 :
$* , $@
$# : 6
+------------------------+
l l
# ./ case1.sh aaa bbb ccc ddd eee fff
l l l l l l l
$0 $1 $2 $3 $4 $5 $6 ...... $9 ${10}
쉘에서 제공되는 특수 변수들
$0 : 명령어
$1 : 첫번째 인자
$2 : 두번째 인자
:
:
$# : 전체 인자의 개수
$* : 전체 인자의 문자열
$@ : 전체 인자의 문자열
case 문의 대표적인 프로그램
/etc/init.d/sshd : ssh 원격 접속 데몬을 실행시켜주는 스크립트
/usr/sbin/sshd : ssh 원격 접속 데몬
#/etc/init.d/sshe
사용법 : /etc/init.d/sshd {start|stop|restart|reload|force-reload|condrestart|try-restart|status}
ex) # /etc/init.d/sshd stop
sshd 를 정지 중 : [ OK ]
ex) # /etc/init.d/ssht start
sshd 를 시작 중 : [ OK ]
while 반복문
- 명령문을 반복적으로 사용하고자 할 경우에 사용한다
형식 :
while [ 조건문]
do
실행문
:
:
:
done
ex)
# i=1
# while [ $i -ne 5 ]
> do
> printf "." <------ . 을 화면에 출력한다. (엔터(개행)키가 없다)
> sleep 1 <------ 1초 중지한다
> i=$((i+1)) <------- i 변수의 값을 1 증가한다 i=$((i+1)) == i++
>done
....
for 반복문
- 명령문을 반복적으로 사용하고자 할 경우에 사용한다
형식 :
for 변수 in 리스트
do
실행문
:
:
done
ex)
# for i in 1 2 3 4 5
do
echo "i = $i 입니다"
done
i = 1입니다
i = 2입니다
i = 3입니다
i = 4입니다
i = 5입니다
until 반복문
- 명령문을 반복적으로 사용하고자 할 경우에 사용한다
while 문 하고 다르게 조건문에 거짓을 경우에 do ~ done 사이를 실행한다
형식 :
while [조건문]
do
실행문
:
:
done
ex)
# i=1
# until [ $i -eq 5 ]
> do
> echo -n "."
> sleep 1
> i=$((i+1))
> done
....
continue 문
- for , while 반복문에서 사용한다
- continue 문은 반복문에서 만나면 조건문으로 올라간다
ex)
# i=0
# while :
> do
> i=$((i+1))
> if [ $i -eq 3 ];
> then
> continue
> fi
> if [ $i -eq 10 ];
> then
> break
> fi
> echo "i = $i"
> done
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
break 문
- for , while 반복문에서 사용한다
- break문은 반복문에서 만나면 반복문을 종료한다
break 문이 없는 경우
ex)
# i=1
# while :
> do
> printf "."
> sleep 1
> i=$((i+1))
> done
........................(무한루프)
break 문이 있는경우
ex)
# i=1
# while :
> do
> printf "."
> sleep 1
> i=$((i+1))
> if [ $i -eq 10 ];
> then
> break
> fi
> done
..........(루프종료)
함수
- 여러가지 일을 하나로 처리할 수 있도록 묶어놓은 코드의 집합
함수정의 :
function 함수명()
{
명령어
:
:
}
함수명()
{
명령어
:
:
}
명령행 인자 :
$* , $@
$# : 6
+------------------------+
l l
# ./ case1.sh aaa bbb ccc ddd eee fff
l l l l l l l
$0 $1 $2 $3 $4 $5 $6 ...... $9 ${10}
쉘에서 제공되는 특수 변수들
$0 : 명령어
$1 : 첫번째 인자
$2 : 두번째 인자
:
:
$# : 전체 인자의 개수
$* : 전체 인자의 문자열
$@ : 전체 인자의 문자열
'Linux > Linux (CentOS)' 카테고리의 다른 글
심볼릭 링크 하드링크 (0) | 2018.07.05 |
---|---|
리눅스 기본 설명 (0) | 2018.07.05 |
패키지 관리 (0) | 2018.07.04 |
프로세스 (0) | 2018.07.04 |
사용자 그룹 (0) | 2018.07.03 |