간단한 쉘 스크립트의 작성

프로그래밍/BASH SHELL|2015. 1. 27. 10:05
반응형

쉘 프로그래밍으로 형성된 파일이 쉘 스크립트다.

쉘에 접하기에 앞서 우리는 디렉토리 /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

 

[결과]


반응형

댓글()