더운여름 셸 스크립트와 함께 해요!
실내온도 30도! 더운 여름휴가를 셸스크립트와 함께 보내는 시원한 프로젝트
한빛미디어 - 유닉스 리눅스 셸 스크립트 예제 사전을 요약한 내용입니다.
1) 실행권한 추가
chmod +x "$script name"
2) 문법 에러 확인
문법에러가 있으면 표시되고, 없다면 아무것도 표시되지 않는다.
sh -n "$script name"
001 명령어 옵션 처리하기
#!/bin/sh
# -a옵션이 지정되었는지 판단하는 셸 변수 a_flag
# 0으로 초기화하고 설정되었다면 1로 바꾸는것이 일반적이다
a_flag=0
separator=""
# 실제로 getopts로 옵션을 해석한다. 옵션에 사용된 문자는 getopts인수로 나열하며
# 그 옵션 자체가 인수를 받는것은 콜론으로 지정한다. 예) ap: = a옵션과 p옵션을 사용한다. p: p옵션은 인수를 받는다.
# 인수가 있는 옵션을 여러개 쓰고 싶을 때는 콜론을 붙여서 나열한다 "ap:x:z:"
# 사용자가 입력한 옵션은 option 변수로 받아서 case문에서 분기처리한다.
while getopts "ap:" option
do
case $option in
a)
a_flag=1
;;
p)
separator="$OPTARG" #p다음에 들어오는 인수는 OPTARG에 저장된다.
;;
/?)
echo "Usage: getopt.sh [-a] [-p separator] target_dir" 1>&2
exit 1
;;
esac
done
#옵션 지정을 위치 파라미터에서 삭제하기
# OPTIND는 '차례를 기다리고 있는 다음 파라미터의 위치'
#
shift $(expr $OPTIND - 1)
path="$1"
if [ -z "$path" ]; then
path=`pwd`
fi
# -a 옵션이 지정되었는지 셸 변수 a_flag값으로 판단하기
if [ $a_flag -eq 1 ] ; then
# --를 붙이면 path가 -로 시작하더라도 옵션이 아니라고 인식한다.
ls -a -- "$path"
elif [ -n "$path" ] ; then
ls -- "$path"
else
echo "Usage: getopt.sh [-a] [-p seoaratir] target_dir"
exit 1
fi
# 문자열이 비었는지 여부를 판단한다.
if [ -n "$separator" ]; then
echo "$separator"
fi
댓글