Perl の実行がスクリプトの一部としてカウントされる場合は、Perl で回答を作成します。次の質問は、営業日を定義するものは何ですか? あなたは日曜日に開いているお店/店ですか? 土曜日?または、月曜から金曜までの 9 時から 5 時までのビジネスですか? 休日はどうですか?
月曜日から金曜日までと休日が一時的に重要ではないと考えていると仮定すると、日曜日の wday が 0 から土曜日の 6 になることに注意する Perl のアルゴリズムを使用できます。したがって、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 でも使用されます)。