Ubuntu 14.04 LTS 환경을 기준으로 작성되었습니다.
인수 사용하기
쉘 스크립트에서 인수를 받는 방법은 크게 두 가지가 있다.
지정한 순서대로 인수 값 참조하기
#!/bin/bash
# params.sh
args1=$1
args2=$2
if [ $# = 0 ]
then
echo "인수가 업습니다"
elif [ $# = 1 ]
then
echo "첫번째 인수는 $args1"
elif [ $# = 2 ]
then
echo "첫번째 인수는 $args1"
echo "두번째 인수는 $args2"
else
echo "인수는 2개 이하이어야 합니다"
fi
$ sh params.sh dog cat
첫번째 인수는 dog
두번째 인수는 cat
옵션 이름으로 인수 값 참조하기
#!/bin/bash
# options.sh
while getopts a:b:c: OPT
do
case $OPT in
a) a="$OPTARG" ;;
b) b="$OPTARG" ;;
c) c="$OPTARG" ;;
esac
done
if [ "$a" != "" ]
then
echo "a 값은 $a"
fi
if [ "$b" != "" ]
then
echo "b 값은 $b"
fi
if [ "$c" != "" ]
then
echo "c 값은 $c"
fi
$ sh options.sh -a dog -b cat -c lion
a 값은 dog
b 값은 cat
c 값은 lion
함수
#!/bin/bash
# func.sh
main() {
hello Peter Tom Jack
hello
if [ $? != 0 ]
then
echo "명령어 실패"
fi
}
hello() {
people=$*
if [ "$people" = "" ]
then
echo "인수가 없습니다."
return 1
fi
for person in $people
do
echo "Hello, $person. Today is $(today)"
done
}
today() {
date +%Y-%m-%d
}
main
$ sh func.sh
Hello, Peter. Today is 2017-07-09
Hello, Tom. Today is 2017-07-09
Hello, Jack. Today is 2017-07-09
인수가 없습니다.
명령어 실패
case
case 문에서는 패턴에 따른 분기도 가능하다.
#!/bin/bash
birth_date=$1
case $birth_date in
921207)
echo "저와 생일이 같으시군요!"
;;
??03??|??04??|??05??)
echo "봄에 태어나셨군요!"
;;
??06??|??07??|??08??)
echo "여름에 태어나셨군요!"
;;
??09??|??10??|??11??)
echo "가을에 태어나셨군요!"
;;
??01??|??02??|??12??)
echo "겨울에 태어나셨군요!"
;;
esac