날짜 유효성 체크 스크립트 관련하여 글을 기재한다.
유효한 유효성 체크를 가진 스크립트들도 많으나 가장 사용하기 편했기 때문이다.
제약사항으로 BASH 3.0 이상에서 사용가능한 기능이 내포되어있다는 점에만 유의하면 될듯하다.
※ BASH3.0 유효성검사 중 [:digit:]
#!/bin/bash
#--------------------------------------------------------------------------
#-- Set Error if Variable is Not Set
#-- Set Exit if Error is Occured
#--------------------------------------------------------------------------
#set -o nounset
set -o errexit
#--------------------------------------------------------------------------
# // Check Parameter & Define Variable
#--------------------------------------------------------------------------
if [[ $# -lt 1 ]]; then
if [[ $# != $1 ]]; then
echo
echo " *** NOT FOUND DATE ARG : ($1) ***"
echo " ex ) ex) ./dateFormat.sh 2019/12/26"
echo
exit 1
fi
fi
DATE=$1
#---------------------------------------------------------------
# // Validate Parameter & Run Script
#---------------------------------------------------------------
func_main() {
local RST=$(func_date_format_chk ${DATE})
if [[ -z ${RST} ]]; then
echo "[ ERROR ] OUT PUT DATA is (${DATE})"
echo "ex) ./dateFormat.sh 2019/12/26"
else
echo "[ INFO ] OUT PUT DATA is ${RST}."
fi
}
func_date_format_chk() {
local VAL=$1
if [[ ${VAL} =~ ^[[:digit:]]{4}(/[[:digit:]]{2})(/[[:digit:]]{2})$ ]]; then
local CHK=`echo "${VAL}" | awk -F '/' '{ print ( match($1, /^[0-9][0-9][0-9][0-9]$/) && $2 <= 12 && $3 <= 31 ) ? "0" : "1" }'`
if [[ ${CHK} -eq 0 ]]; then
echo "${VAL}" | sed 's#/##g'
fi
fi
}
func_main
#- References
[stackoverflow]date-validation-in-unix-shell-script-ksh
[e-book] wicked cool shell scripts
'개발 > Languages & Scripts' 카테고리의 다른 글
(Shell)스크립트 작성시, PWD보다는 정의한 BASE_DIR를... (0) | 2019.10.19 |
---|---|
JAVA (0) | 2019.09.26 |