[ 쉘 스크립트 ]
1. 생성 및 실행
]#vi test1.sh
-----------------------------
#!/bin/sh # 생략가능
date
pwd
ls -al
-----------------------------
]#실행권한 부여
]#./test1.sh
2. 문자 출력 및 변수 생성
]#vi test2.sh
-----------------------------
#!/bin/sh
echo "Linux"
echo 'Java'
echo Oracle
echo "Linux 100"
echo 'Java 100'
echo Oracle 100 # 한 칸씩만 인정됨
city=Seoul # 변수 생성 시 공백 불가 ( ex: city = Daegu (x) )
echo $city
echo "Welcome to $city"
echo 'Welcome to $city' # 변수가 일반문자 처리 됨
echo Welcome to $city
3. 연산
]#vi test3.sh
-----------------------------
a=27
b=10
echo $a
echo $b
echo '$a='$a , '$b='$b # 쉼표(,)까지 연결되어 출력
echo $a+$b #연산 안됨 - 일반문자 처리
echo `expr $a+$b` #연산 안됨 - 일반문자 처리
echo `expr $a + $b`
echo `expr $a - $b`
echo `expr $a \* $b` # 곱하기 * 앞에는 \ 를 붙여줌
echo `expr $a / $b`
echo `expr $a % $b`
4. 두 점수의 합계와 평균 출력
]#vi test4.sh
-----------------------------
eng=90
kor=80
sum=`expr $eng + $kor`
avg=`expr $sum/2`
echo sum=$sum
echo avg=$avg
▶ 리눅스 명령어의 변수화
]#echo "Hello"
]#pwd
]#echo "path : $(pwd)"
▶ 매개변수
]#vi parmTest.sh
-----------------------------
#!/bin/sh
echo "parameter $1 $2"
-----------------------------
]#./parmTest.sh Korea USA (enter)
▶ 날짜관련
-----------------------------
(주의 : $(date공백+%Y%m%d) --> date명령 뒤에 공백 있음)
#!/bin/bash
echo "--- date ---"
echo "now1 : $(date +%Y%m%d) "
echo "now2 : $(date +%Y)년 $(date +%m)월 $(date +%d)일 "
echo "now3 : $(date +%H) 시 $(date +%M) 분 $(date +%S) 초 입니다."
nowDate=`date` ;; date 명령어 결과를 변수 값으로 설정
echo $nowDate
-----------------------------
(백업파일)
linux]$tar cvfz /home/linux/html_$(date +%Y%m%d).tar.gz /home/linux/html
실습1) 매개변수 값을 이용한 계정 생성
1. 계정생성
2. 백업디렉토리 생성
3. 소유주변경
4. 소유그룹변경
#!/bin/sh
useradd $1
echo $2 | passwd --stdin $1
echo "Create User : $1 -- ok"
mkdir /home/$1/backup
chown $1.$1 /home/$1/backup
echo " Complete!! "
실습2) 특정 사용자의 백업파일 만들기
#!/bin/sh
filename=""
▶ 함수생성
]#vi hap.sh
-----------------------------
hap() {
result=`expr $a + $b`
sum="$a+$b=$result"
echo $sum
}
a=10
b=5
hap
[ 조건문 ]
▶ if문
(문법)
if [ 조건 ]; then
내용
elif [ 조건 ]; then
내용
else
내용
fi
( 실습1 )
eng=80
if [[ eng -ge 60]];
then
echo "eng : pass"
else
echo "eng : fail"
fi
( 실습2 )
var1="aa"
if [ $var1 == "aa" ];
then
echo "same"
else
echo "diff"
fi
( 파일의 존재 여부 체크 )
if [ -f "/home/sist/welcome.txt" ]
then
cat /home/sist/welcome.txt
else
echo " Welcome to my site . " > /home/sist/welcome.txt
chown sist /home/sist/welcome.txt
echo "create file ~"
cat /home/sist/welcome.txt
fi
if 문에 사용되는 조건문 종류 |
[ -z ] : 문자열의 길이가 0이면 참 [ -n ] : 문자열의 길이가 0이 아니면 참
[ -eq ] : 값이 같으면 참 [ -ne ] : 값이 다르면 참 [ -gt ] : 값1 > 값2 [ -ge ] : 값1 >= 값2 [ -lt ] : 값1 < 값2 [ -le ] : 값1 <= 값2
[ -f ] : 파일의 존재 여부 [ -d ] : 파일이 디렉토리면 참 [ -e ] : 파일이 있으면 참 [ -L ] : 파일이 심볼릭 링크면 참 [ -r ] : 파일이 읽기 가능하면 참 [ -s ] : 파일의 크기가 0 보다 크면 참 [ -w ] : 파일이 쓰기 가능하면 참 [ -x ] : 파일이 실행 가능하면 참
[ -a ] : &&연산과 동일 and 연산 [ -o ] : ||연산과 동일 xor 연산
[ 파일1 -nt 파일2 ] : 파일1이 파일2 보다 최신파일이면 참 [ 파일1 -ot 파일2 ] : 파일1이 파일2 보다 이전파일이면 참 [ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참
|