Linux 셀 스크립트 프로그래밍
< 변수의 기본 >
1. 변수를 사용하기 전에 미리 선언하지 않으면, 처음 변수에 값이 할당되면 자동으로 변수가 생성
2. 변수에 넣는 모든 값은 문자열로 취급
3. 변수 이름은 대소문자를 구분
4. 변수를 대입할 떄 '=' 좌우에는 공백x
ex) test=one / test="one two' -> 변수의 값에 공백이 있을 시 ""로 묶어야한다
$ 출력 -> ''로 묶어주거나 \를 앞에 붙여줘야한다
< 숫자계산 >
연산을 하기 위해선 역따옴표( ` )로 묶어야 하며, 앞에 expr 키워드를 사용해줘야한다
ex) 'expr $num1 + 200`
< 파라미터 변수 >
$0, $1, $2 등의 형태
dnf -y install gftp -> $0 : dnf $1 : -y $2 : install $3 : gftp / 전체 파라미터 : $*
< i f >
-기본 if
if [ 조건 ] -> 조건문을 쓸 때 각 단어에는 모두 공백이 있어야한다 ex) [ "woo" = "woo" ]
then
참일 경우 실행
fi
-if~else문
if [ 조건 ]
then
참일 경우 실행
else
거짓일 경우 실행
fi
-비교연산자
"문자열" = "문자열" : 두 문자열이 같으면 참
"문자열" != "문자열" : 두 문자열이 같지 않으면 참
-n "문자열" : 문자열이 NULL이 아니면 참
-z "문자열" : 문자열이 NULL이면 참
-산술연산자
수식1 -eq 수식2 : 두 수식이 같으면 참
수식1 -ne 수식2 : 두 수식이 같지 않으면 참
수식1 -gt(>) 수식2 : 수식1이 크다면 참
수식1 -ge(>=) 수식2 : 수식1이 크거나 같으면 참
수식1 -lt 수식2 : 수식1이 작으면 참
수식1 -le 수식2 : 수식1이 작거나 같으면 참
!수식 : 수식이 거짓이면 참
< case ~esac문 >
case "$1" in
1)
~~~ ;; -> 뒤에 세미콜론 2개를 꼭 붙여야한다
2)
~~~ ;;
esac
< 반복문 >
-for ~in문
for 변수 in 값1 값2 값3 ....
do
반복할 문장
done
-while문
while [ 조건문 ]
do
반복할 문장
done
< 사용자 정의 함수 >
함수이름( )
{
내용
} ->함수정의
함수이름 ->함수호출
< 예제 >
while을 이용한 num1~num2의 합
#!/bin/sh
hap=0
num1=`expr $1`
num2=`expr $2`
i=$num1
while [ $i -le $num2 ]
do
hap=`expr $hap + $i`
i=`expr $i + 1`
done
echo "$num1부터 $num2까지 합 : " $hap
exit 0
[root@localhost ~]# vi while.sh
[root@localhost ~]# sh while.sh 10 15
10부터 15까지 합 : 75
특정 수 범위
#!/bin/sh
num=`expr $1`
if [ $num -lt 10 ]
then
num=1
else
if [ $num -lt 100 ]
then
num=2
else
if [ $num -lt 1000 ]
then
num=3
else
num=4
fi
fi
fi
case $num in
1)
echo "10보다 작음";;
2)
echo "100보다 작음";;
3)
echo "1000보다 작음";;
*)
ehco "1000보다 큼";;
esac
exit 0
[root@localhost ~]# sh while2.sh 104
1000보다 작음
특정 값 입력에 대한 연산
#!/bin/sh
if [ $1 = e ]
then
echo "프로그램 종료"
exit 0
fi
num1=`expr $1`
num2=`expr $3`
case $2 in
+)
echo "$num1 + $num2 =" `expr $num1 + $num2`;;
-)
echo "$num1 - $num2 =" `expr $num1 - $num2`;;
\*)
echo "$num1 \* $num2 =" `expr $num1 \* $num2`;;
/)
echo "$num1 / $num2 =" `expr $num1 / $num2`;;
esac
[root@localhost ~]# sh calc.sh 1 + 2
1 + 2 = 3
[root@localhost ~]# sh calc.sh e
프로그램 종료
[root@localhost ~]# sh calc.sh 2 - 1
2 - 1 = 1
[root@localhost ~]# sh calc.sh 2 / 1
2 / 1 = 2
[root@localhost ~]# sh calc.sh 2 \* 1
2 \* 1 = 2