shell script에서 이전 달 스트링 구하기

leilei의 이미지

#! /bin/sh

CUR_YEAR=$(date +%Y)
CUR_MON=$(date +%m)

PREV_MON=`expr $CUR_MON - 1`
echo $CUR_YEAR $PREV_MON

이렇게 했더니 200402가 아니라 20042가 구해지네요.. ㅠ,.ㅠ

바로 지난 달에 만들어진 폴더를 지울려구 하는데요..
폴더 이름이 년도,달,날짜가 줄줄이 붙어서 만들어 집니다..
그래서 지금이 3월이니까..

rm -f 200402*

요렇게 지울려고 하는데 바로 지난달 스트링을 구하는게 어렵네요.. ㅠ,.ㅠ
php면 편하게 할것 같은데.. bash(sh)로 할려니 잘 모르겠네요..

깔끔하게 해결 안될까요? ^^;

헛 글구 보니 1월은 따로 체크를 해 줘야 하는군요..

redbaron의 이미지

CUR_YEAR=$(date +%Y%m)

PREV_MON=`expr $CUR_YEAR - 1`
echo $CUR_YEAR $PREV_MON

이렇게 하니 되는군요..(쿨럭) 저도 자세한건 잘..
leilei의 이미지

아하~ :idea:
감사 !!

그런데 역시나 1월을 따로 처리해 줘야 하는군요.. ^^;

aero의 이미지

date +%Y%m --date="-1 month"

의 결과를 쓰시면 될듯하네요.

leilei의 이미지

먼가 어려워보이는... ^^;

이렇게 빨리 답변이 올라오다니..
다들 퇴근 안하시는지..

leilei의 이미지

몇가지 문제가 있네요..
일단 리눅스에선 잘 되지만... sun 에선 안돼는군요.. ㅠ,.ㅠ
장비 하나가 SunOS 5.8인데 말이죠..

글구.. 리눅스에서 보면..

$ date
2004. 03. 30. (화) 09:49:06 KST

현재 이렇게 나오는데..

$ date +%Y%m --date="-1 month"
200403
$ date +%Y%m --date="1 month ago"
200403

이렇게 나와 버립니다..

물론..

$ date +%Y%m --date="1 month 10 days ago"
200402

이렇게 하면 잘 나오구요..

다른건 다 man page를 보구선 왜 date는 date --help 만 봤는지.. -_-;
그나저나 리눅스에선 이만용님께서 번역하신 상세한 man page가
나오는군요.. :)

우겨의 이미지

leilei wrote:
몇가지 문제가 있네요..
일단 리눅스에선 잘 되지만... sun 에선 안돼는군요.. ㅠ,.ㅠ
장비 하나가 SunOS 5.8인데 말이죠..

편법으로는 gnu coreutils Sun용 바이너리 패키지안에 있는 date를 쓰시면 됩니다.

http://www.sunfreeware.com/
ftp://ftp.sayclub.com/pub/sun_freeware/

Fe.head의 이미지

오래된 글이지만 나중에 참고 할것같아 글을 남깁니다.

date에서 -d 옵션을 지원하지 않을때 사용하는 방법입니다.(perl 이용함)

# 아래는 15일전 날짜 구하기 --> 15*24*60*60 이부분에서 15를 바꾸면 원하는 문자로 나옴.
perl -e 'my ($d, $m, $y) = (localtime(time-15*24*60*60))[3,4,5];  printf "%04d%02d%02d", $y+1900, $m+1, $d;'

출력 결과

$ date +%Y%m%d
20101224
 
$ perl -e 'my ($d, $m, $y) = (localtime(time-15*24*60*60))[3,4,5];  printf "%04d%02d%02d", $y+1900, $m+1, $d;'
20101209

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"