변수의 값에 따라 여러 가지 다른 작업을 할 때 사용
case 변수 in
pattern1)
명령어;;
pattern2)
명령어;;
*)
명령어
esac
vi case1.sh
1을 입력 : 아이틸
2를 입력 : 부산이 출력
#!/bin/sh
case "$1" in
1)
echo "itwill";;
2)
echo "busan";;
*)
echo "1 또는 2를 입력하세요!"
esac
[root@localhost ~]# sh case1.sh
1 또는 2를 입력하세요!
[root@localhost ~]# sh case1.sh 1
itwill
[root@localhost ~]# sh case1.sh 2
busan
[퀴즈_Case.sh]
/root/test/newfile.txt
파일이 있다면 "파일이 존재합니다."
파일이 없다면 "새로운 파일을 생성할까요?" 라는 문구를 출력하고
'y'를 입력하면 newfile.txt의 빈파일을 생성
'n'를 입력하면 "파일을 생성하지 않았습니다."를 출력
하는 셸스크립트를 작성
if [ -e /root/test/newfile.txt ]
then
echo "파일이 존재합니다."
else
echo "파일이 존재하지 않습니다!"
echo -n "새로운 파일을 생성할까요? (y/n) : "
read answer
case $answer in
yes|y|Y|Yes|YES)
touch /root/test/newfile.txt;;
no|n|N|No|NO)
echo "파일을 생성하지 않았습니다.";;
*)
echo " y 또는 n을 입력하세요! "
exit 1;;
esac
fi
vi calculate.sh
#!/bin/sh
echo "두 숫자를 입력받아 덧셈값을 출력하는 셸 프로그램>입니다."
echo -n "첫 번째 숫자를 입력해주세요 : "
read A
echo -n "두 번째 숫자를 입력해주세요 : "
read B
C=`expr $A + $B`
echo "두 숫자의 합은 $C 입니다."
vi calculate2.sh
#!/bin/sh
num1=100
num2=$num1+200
echo $num2
num3=`expr $num1 + 200`
echo $num3
num4=`expr \( $num1 + 200 \) / 10 \* 2`
echo $num4
exit 0
vi expr1.sh
#!/bin/sh
echo -n "Please Insert the String : "
read str
echo `expr length $str`
sum=0
for i in 1 2 3 4 5 6 7 8 9 10
do
sum=`expr $sum + $i`
done
[root@localhost ~]# sh for1.sh
1부터 10까지의 합은 55 입니다.
vi for2.sh
#!/bin/sh
echo "디렉터리 내의 셸 스크립트 파일을 찾아 내용을 보여>주는 셸 스크립트입니다."
echo -n "현재 디렉터리의 내용을 보려면 'y'를 다른 디렉터
리의 내용을 보려면 'n'를 입력하세요 : "
read answer
if [ $answer = 'y' ]
then
for fname in $(ls *.sh)
do
echo "------------ $fname -----------"
cat $fname
done
elif [ $answer = 'n' ]
then
echo -n "보고 싶은 디렉터리를 입력하세요 : "
read dir
for fname in $(ls $dir/*.sh)
do
echo "------------ $fname ------------"
cat $fname
done
else
echo "y 또는 n을 입력하세요!!"
fi
vi while1.sh
#!/bin/sh
while [ 1 ]
do
echo "ITWILL"
done
=> ITWILL 반복되어 출력
=> Ctrl + C 를 입력하여 빠져나옴!!
while문을 사용하여 1에서 10까지 합을 출력하는 셸 스크립트 작성
#!/bin/sh
sum=0
i=1
while [ $i -le 10 ]
do
sum=`expr $sum + $i`
i=`expr $i + 1`
done
echo "1부터 10까지의 합은 : $sum이다."
exit 0
#!/bin/sh
echo -n "비밀번호를 입력하세요: "
read password
while [ $password != 'itwill' ]
do
echo -n "비밀번호가 다릅니다. 다시 입력하세요: "
read password
done
echo "올바른 비밀번호입니다!"
exit 0
crontab -l
=> no crontab for root
=> crond는 사용자별로 동작
현재 root 사용자의 cron(자동화 예약)은 없다!
crontab -e
내용을 넣지 않고 : wq
no crontab for root - using an empty one
crontab: installing new crontab
ls /var/spool/cron/
=> root
cat /var/spool/cron/root
=> 아무 내용이 없음.
crontab -e
01 * * * * sh /root/hello.sh
:wq
=> (요일무관) 매월 매일 매시 1분에 /root/hello.sh 셸 스크립트 실행
crontab -l
01 * * * * sh /root/hello.sh
cat /var/spool/cron/root
01 * * * * sh /root/hello.sh
vi hello.sh
#!/bin/sh
echo "Hello" >> /root/hello.txt
exit 0
:wq
date
=> 현재 시각을 출력
date -s 00:00:00
=> 리눅스에 설정된 시각을 '00시00분00초'로 변경
A. 마다 라는 표현은 */
=> 1분마다 */1, 10분마다 */10
* * * * * sh /root/hello.sh
=> 1분마다 hello.sh를 실행
*/1 * * * * sh /root/hello.sh
=> 1분마다 hello.sh를 실행
/10 * * * sh /root/hello.sh
=> 10분마다 hello.sh를 실행
=> 0,10,20,30,40,50 * * * * sh /root/hello/sh 로도 표현 가능!!
crontab -r
=> 삭제!!