Что ж, если запуск Perl считается частью скрипта, тогда разработайте ответ в Perl. Следующий вопрос - что определяет рабочий день? Вы магазин / магазин, который открыт в воскресенье? Суббота? Или 9-5 с понедельника по пятницу бизнес? А как насчет праздников?
Если вы думаете, что с понедельника по пятницу и праздничные дни временно несущественны, тогда вы можете использовать алгоритм в Perl, который отмечает, что wday будет 0 в воскресенье - 6 в субботу, и поэтому, если wday равен 1, вам нужно вычесть 3 * 86400 от времени (); если wday равен 0, вам необходимо вычесть 2 * 86400; и если wday равен 6, вам нужно вычесть 1 * 86400. Вот что у вас есть в оболочке Korn - просто сделайте это в Perl:
#!/bin/perl -w
use strict;
use POSIX;
use constant SECS_PER_DAY => 24 * 60 * 60;
my(@days) = (2, 3, 1, 1, 1, 1, 1);
my($now) = time;
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($now);
print strftime("%Y-%m-%d\n", localtime($now - $days[$wday] * SECS_PER_DAY));
Это предполагает, что у вас есть модуль POSIX; если нет, то вам нужно выполнить примерно ту же функцию printf (), которую вы использовали. Я также использую формат ISO 8601 для дат по предпочтению (также используется XSD и SQL) - отсюда и иллюстрированный формат.