간단한 쉘 스크립트의 작성
쉘 프로그래밍으로 형성된 파일이 쉘 스크립트다.
쉘에 접하기에 앞서 우리는 디렉토리 /etc/rc.d에 주목해야 한다. 디렉토리 /etc 아래의 /rc.d/ 에는 많은 파일들이 존재하는데 모두
쉘 스크립트로 짜여진 것이다.
다음의 예제는 가장 일반적인 예제이다.
먼저 다음 예제를 수행하기 위해서는 cat > hello.sh 나 혹은 vi hello.sh와 같은 방버으로 hello.sh를 만드는 방법이 있다.
그 다음으로 우리는 #! /bin/sh와 echo "Hello Word!!" 라는 내용을 다음 예제와 같이 기입해 준다.
[예제 1-1] hello.sh
#!/bin/sh
echo "Hello Word!!"
와 같이 파일을 생성하고
chmod 700 hello.sh
./hello.sh
와 같이 해주면 출력된 "Hello Word!!" 를 볼 수 있다.
echo는 하나 혹은 그 이상의 문자열이나 변수값 등을 출력해 주는 명령어이다. 위 예제에서는 "Hello Word!!"라는 간단한 문자열을 출력해
보았다. 여기에서 #! <쉘의 위치> 와 같은 형식으로 굳이 이러한 방식으로 하지 않아도 무방하나 가장 일반적인 형식이므로 지켜가며 학습을
하기 바란다.
-----------------------------------------------------------------------------------------------
다음은 시스템의 환경을 출력해 보고자 할 경우를 나타낸 예제이다.
[예제 1-2] information1.sh
#!/bin/sh
echo " - 시스템 환경 출력 예제 1-1 -"
echo -n "HOSTNAME : "
echo $HOSTNAME
echo -n "USER : "
echo $USER
echo -n "NAME : "
NAME="Linux User Test"
echo $NAME
echo -n "SHELL : "
echo $SHELL
echo -n "pwd : "
pwd
echo -n "ls : "
ls
[결과]
-----------------------------------------------------------------------------------------------
[예제 2] question.sh
#!/bin/sh
echo -n "우리 나라의 영문 국가명은?"
read nation
echo -n "우리 나라의 국보 1호는?"
read kukbo
echo 영문 국가명 : $nation
echo 국보 1호 : $kukbo
[결과]
read 명령은 키보드로부터 값을 읽어들인 후 그 값을 변수에 저장하고 출력하는 것이다.
-----------------------------------------------------------------------------------------------
[예제 3] smoker.sh
#!/bin/sh
smoker=10
no_smoker=20
if [ $smoker -lt $no_smoker ]
then
echo "비흡연자가 더 많다."
elif [ $smoker -eq $no_smoker ]
then
echo "흡연자와 비흡연자의 수는 동일하다."
else
"흡연자가 더 많다."
fi
[결과]
-if문과 다음에 나오는 '[]' 기호를 붙여서 사용하면 에러가 발생하고 또 기호 '[' 다음에 오는 기호 '$'도 역시 붙여서 기입하면
에러가 발생하므로 이 점을 주의하자.
-----------------------------------------------------------------------------------------------
if문
[예제 4] linuxer.sh
#!/bin/sh
vlinuxer=100
Mswindow=5
if [ $vlinuxer -lt $Mswindow ]
then
echo "윈도즈 사용자 수가 더 많다"
elif [ $vlinuxer -eq $Mswindow ]
then
echo "윈도즈 사용자의 수와 리눅서의 수는 동일"
else
echo "리눅스 세계정복!"
fi
[결과]
-----------------------------------------------------------------------------------------------
case문
[예제 5] vowel.sh
#!/bin/sh
echo -n "아무 것이나 고르시오"
read answer
a="a"
case "$answer" in
a* | e* | i* | o* | u* ) a = "an";;
esac
echo You like $a $answer!
[결과]
(한글이 좀 지져분 하지만 밖에나와서 하는중이라 hackerschool linux 이용 -_-ㅋ)
-----------------------------------------------------------------------------------------------
for 문
[예제 6] for.sh
#!/bin/sh
for A in k o r e a
do
echo $A
done
[결과]
-----------------------------------------------------------------------------------------------
[예제 6-1] while.sh
#!bin/sh
loop=1
while [ $loop -lt 10 ]
do
echo "이것은 테스트입니다."
loop=`expr $loop + 1`
done
주의해야할 것은 따옴표(') 가 아닌 숫자 1옆에 ` 이다.
[결과]
-----------------------------------------------------------------------------------------------
[예제 6-2] stupid.sh
#!/bin/sh
while [ 1 ]
do
echo -n "담배가 좋습니까?(예/아니오) : "
read a
if [ x$a = "x예" ]
then
break
else
continue
fi
done
echo "GOOD!"
[결과]
-----------------------------------------------------------------------------------------------
until 문
[예제 7] until.sh
#!/bin/sh
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
[결과]
[출처] [Linux/Unix]간단한 쉘 스크립트의 작성|작성자 bestheroz
'프로그래밍 > BASH SHELL' 카테고리의 다른 글
[vi] 특정 단어를 포함하여 그줄의 앞 또는 뒤 끝까지 (0) | 2015.01.27 |
---|---|
[vi] 특정 단어부터 끝까지 지우기 (0) | 2015.01.27 |
특정 파일 / 디렉토리 바꾸기 (쉘스크립트 포함) (0) | 2015.01.27 |
bash 프롬프트 howto (0) | 2015.01.27 |
grep 계열 명령어 (0) | 2015.01.27 |