리눅스에서의 날짜 계산은 예약된 파라미터가 존재하여 비교적 쉽게 구할 수 있지만, AIX 는그런 함수가 따로 없다.
따라서 TZ (표준시간대, Time Zone) 라는 값을 수동으로 설정해주어야 되고, dateformat 도 맞춰줘야한다.
여기에 대해서 정리해보도록 하겠다.
* 오늘 날짜는 2015/08/17 이다.
# ymd 당일
ymd=`date +%Y%m%d`
echo $ymd
결과 : 20150817
# ymd10 10일로 고정
ymd10=`date +%Y%m`'10'
echo $ymd10
결과 : 20150810
# yesterday 어제
t=`expr 24 - 9`
yesterday=`TZ=KST+$t; date +%Y%m%d`
echo $yesterday
결과 : 20150816
AIX 는 날짜를 변환하는데 있어 예약어가 없이 TZ 라는 값을 변환하여 사용한다.
한국의 표준시간대는 KST-9 이며, 어제의 시간을 찾으려면 24를 더해주면 되는데
계산을 쉽게하기 위해서 t 라는 변수값을 활용하였다.
# lastmonth 저번달
t=`expr 24 \* 31 - 9`
lastmonth=`TZ=KST+$t; date +%Y%m`
echo $lastmonth
결과 : 201507
저번달 역시 '어제' 를 구할 때 처럼 TZ 값을 변환해야 한다.
저번달의 '월' 을 구하기 위해서 오늘 날짜 기준으로 1개월의 최대 일수인 31에 24 시간을 곱한 수를
TZ 에 더해주면 저번달의 월을 구할 수 있다.
# lastday2 전달 말일
t=`expr 24 \* 31 - 9`
year=`TZ=KST+$t; date +%Y`
month=`TZ=KST+$t; date +%m`
lastday=`cal $month $year | tr -s " " "\\n" | tail -1`
lastday2=$year$month$lastday
echo $lastday2
결과 : 20150731
업무를 하다보면 배치를 돌리기 위해서 파라미터 값으로 특정한 날을 주어야 되는 경우가 있다.
초일의 경우는 '01' 로 값을 넣으면 되지만, 말일의 경우 28, 30, 31 일이라는 변수가 생겨 이를 쉽게 구분하기가 힘들다.
이를 구분하기 위해서는 위와 같이 조금 심화된 스크립트를 활용하여야 한다.
cal 는 AIX 에서 달력을 보여주는 함수로 이를 위와 같은 스크립트로 활용하면 해당 연월의 마지막 날짜를 구할 수 있다.
'IT > Unix / Linux' 카테고리의 다른 글
[정보/공통] 쉘 프로그램의 대체 실행방식 (0) | 2015.08.18 |
---|---|
[TIP/AIX] FTP 로 파일 전송하기 (put 방식) (0) | 2015.08.18 |
[TIP/Ubuntu] Ubuntu 기본 설정 (0) | 2015.08.13 |
[정보/공통] 파일 권한 (0) | 2015.08.07 |
[TIP/공통] 기본명령어 사용 팁 (0) | 2015.08.07 |