2017-01-10 7 views
4

일 수 b/w 두 날짜를 찾으려고합니다. 다음은 UNIX에서 완벽하게 작동하는 코드입니다.Bash를 사용하여 AIX에서 두 날짜 사이의 일수를 계산하십시오.

date: Not a recognized flag: d

Usage: date [-u] [+"Field Descriptors"]

date: Not a recognized flag: d

Usage: date [-u] [+"Field Descriptors"]

(-)/86400: syntax error: operand expected (error token is ")/86400")`

는 그것은 PROD의 ENV 그리고 나는 거기에 어떤 팩을 설치하려면 관리자 권한이 없습니다 :

date1=$(date "+%m/%d/%y") 
temp1=4/8/24 
echo $((($(date -u -d $temp1 +%s) - $(date -u -d $date1 +%s))/86400)) 

내가 AIX 상자에 스크립트 위에 실행하고

, 나는 오류가 아래 얻고있다.

+0

펄이나 AWK에 액세스 할 수 있습니까? 보세요 : http://unix.ittoolbox.com/groups/technical-functional/unixadmin-l/shell-script-to-find-noofdays-between-two-dates-in-aix-server-5591705 – Cyrus

+0

있습니다. awk NOT a gix on aix 상자. – user0

+0

AIX에서 날짜에 플래그 'd'가없는 것 같습니다. AIX date 명령에 대한 정보를 참조하십시오. https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/com.ibm.aix.cmds2/date.htm –

답변

1

이 한 달이 해의 1/12이라고 가정하고 적절한 4 자리 년을 사용하는 :

#!/usr/bin/awk -f 
function mktm(datespec) { 
    split(datespec, q, "/") 
    return \ 
    (q[3] - 1970) * 60 * 60 * 24 * 365.25 + \ 
    (q[1] - 1) * 60 * 60 * 24 * 365.25/12 + \ 
    (q[2] - 1) * 60 * 60 * 24 
} 
function ceil(x) { 
    y = int(x); return y < x ? y + 1 : y 
} 
BEGIN { 
    srand() 
    print ceil((mktm(ARGV[1]) - srand())/(60 * 60 * 24)) 
}