특정 날짜를 기준으로 며칠전 날짜를 얻어오는 예시인데, 

아래와 같이 하면 안된다. 


dd=`date --date="$GIVEN_DAY" -d "-$i day" +%m`


아래와 같이 코딩하면 된다.


dd=`date "--date=${GIVEN_DAY} -d -${i} day" +%d`




실제 예시 코드이다. 

#!/bin/sh

if [ $# -lt 3 ]; then
echo 1>&2 "$0: not enough arguments [usage] shell-script.sh YEAR MONTH DAY"
exit 2
fi

YEAR=$1
MONTH=$2
DAY=$3
NUM_DAYS=$4

GIVEN_DAY=`echo ${YEAR}${MONTH}${DAY}`
INPUTS=()
for (( i=0 ; i<$NUM_DAYS ; i++ ))
do
yyyy=`date "--date=${GIVEN_DAY} -d -${i} day" +%Y`
mm=`date "--date=${GIVEN_DAY} -d -${i} day" +%m`
dd=`date "--date=${GIVEN_DAY} -d -${i} day" +%d`
INPUTS+=("$yyyy/$mm/$dd")
done

for input in "${INPUTS[@]}"
do
echo $input
done


$ sh test.sh 2016 02 02 3

2016/02/02

2016/02/01

2016/01/31






Posted by '김용환'
,