Próbuję ustalić liczbę dni w dwóch datach. Poniżej znajduje się kod, który mam doskonale działający w systemie UNIX.
date1=$(date "+%m/%d/%y")
temp1=4/8/24
echo $((($(date -u -d $temp1 +%s) - $(date -u -d $date1 +%s)) / 86400))
Kiedy wykonuję powyższy skrypt w systemie AIX, otrzymuję poniżej błąd:
data: nie uznana flaga: d
Użycie: date [-u] [+ "Deskryptory pól"]
data: nie uznana flaga: d
Użycie: date [-u] [+ "Deskryptory pól"]
(-) / 86400: błąd składni: oczekiwany operand (błąd token ") / 86400") `
To jest środowisko PROD i nie mam uprawnień administratora do instalowania na nim żadnego pakietu.
Odpowiedzi:
1 dla odpowiedzi № 1Zakłada się, że miesiąc to 1/12 roku i że używasz właściwej cyfry lata:
#!/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))
}