Попробуйте следующее. Этот сценарий читает файлы, перечисленные в командной строке или стандартном вводе, и печатает значения сервера и qmgr для каждой строки, где дата указана на 90 дней или менее в будущем.
#!/bin/sh
# also works with ksh, bash, zsh
now=$(date +%s)
ninety_days=$(( 90 * 24 * 60 * 60 ))
cat "$@" |
while read server colon qmgr colon2 qdate
do
future=$(date +'%s' -d "$qdate")
if [ $((future - now)) -lt $ninety_days ]
then
echo "$server $colon $qmgr"
fi
done
Объяснение:
Сохраните количество секунд между "эпохой" (1970-01-01 UTC) и текущим временем в переменной now
:
now=$(date +%s)
Вычислите количество секунд, содержащихся в 90 днях:
ninety_days=$(( 90 * 24 * 60 * 60 ))
Преобразуйте дату, считанную из последних 3 полей записи, в количество секунд между "эпохой" и этой датой. Сохраните в переменной future
(названной так для ясности при сравнении с переменной now
):
future=$(date +'%s' -d "$qdate")
Вычтите now
из future
, чтобы получить количество секунд между текущей датой и датой в файле. Мы вычислили количество секунд, содержащихся в 90 днях, поэтому мы можем просто сравнить его с разницей между future
и now
.
if [ $((future - now)) -lt $ninety_days ]