Есть отличный способ используя команду ncal:
https://linuxconfig.org/how-to-list-only-work-days-using-shell-command-line-on-linux
Передавая в качестве параметра номер месяца и год можно узнать число будних дней для любого месяца.
ncal -hM 9 2020 | grep -vE "^S|^ |^$" | sed "s/[[:alpha:]]//g" | fmt -w 1 | sort -n | wc -l
22
Это все прекрасно работает до попытки использования в рэдхэт или центос. Там ncal нет, а есть только cal и основное отличие в том, что ncal выводит дни строками, а cal - колонками. Соответственно в ncal строки с выходными можно легко срезать кучей способов:
ncal -hM 9 2020
September 2020
Mo 7 14 21 28
Tu 1 8 15 22 29
We 2 9 16 23 30
Th 3 10 17 24
Fr 4 11 18 25
Sa 5 12 19 26
Su 6 13 20 27
А в cal какого-то надежного способа придумать не получилось:
cal -m $(date +%m -d 'last month') 2020
September 2020
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
нужно для Centos8.