O problema é que a sua pesquisa egrep
vai chamar awk
uma vez para cada linha que vir "28", "29", "30" ou "31". Os meses em que o dia 28 chegar antes da última semana do calendário terão awk
chamados duas vezes, pois duas linhas correspondem aos seus critérios de pesquisa
Você deseja sempre usar a segunda linha da pesquisa egrep
, para poder usar o comando tail
para ver apenas a última linha:
#!/bin/bash
#!/usr/local/bin
#!/usr/sbin
#!/usr/bin
# Script to Check last working Day of the Month
echo " Enter Month and Year :"
read mon year
cal $mon $year| egrep "28|29|30|31"| tail -n 1 |awk 'BEGIN {
var1=$NF;var2=NF;
}
{
if (NF > 1 && NF < 7)
val=$NF;
else if (NF == 1)
val=$NF-2;
else if (NF == 7)
val=$NF-1;
}
{
print "Last Working Date is : " val;
}'