I want to find a way to list all the dates of the current week in UNIX. For example if today is 17-07-2018 then how to get dates 16-07, 18-07, 19-07 and so on for the whole week
Assuming your date
recognizes TZ offsets in hours, this works for the current date:
#!/bin/sh
case $(date +%A) in
(Monday) off=" +0 -24 -48 -72 -96 -120 -144";;
(Tuesday) off=" +24 +0 -24 -48 -72 -96 -120";;
(Wednesday) off=" +48 +24 +0 -24 -48 -72 -96";;
(Thursday) off=" +72 +48 +24 +0 -24 -48 -72";;
(Friday) off=" +96 +72 +48 +24 +0 -24 -48";;
(Saturday) off="+120 +96 +72 +48 +24 +0 -24";;
(Sunday) off="+144 +120 +96 +72 +48 +24 +0";;
esac
for o in $off; do
TZ="$o" date +%d-%m
done
Sample run:
$ date
Sun Jul 15 23:13:43 CEST 2018
$ ./x.sh
09-07
10-07
11-07
12-07
13-07
14-07
15-07
This has no problem with leap years, under/overflow, since it uses date
's built-in knowledge.
PS: I just discovered that my date
(on FreeBSD) takes these offsets from UTC, not the systems time zone; you should investigate this for AIX and if so, adjust the offsets accordingly by your local time zone offset to UTC.