Eh bien, si l'exécution de Perl compte dans le script, développez la réponse en Perl. La question suivante est: qu'est-ce qui définit un jour ouvrable? Êtes-vous un magasin/magasin ouvert le dimanche? Samedi? Ou un 9-5 du lundi au vendredi des affaires? Et les vacances? En supposant que vous pensez du lundi au vendredi et que les vacances soient provisoirement immatérielles, vous pouvez utiliser un algorithme en Perl qui note que wday sera 0 du dimanche au samedi 6, et donc si wday vaut 1, vous devez soustraire 3 * 86400 du temps(); si wday vaut 0, vous devez soustraire 2 * 86400; et si wday est 6, vous devez soustraire 1 * 86400. C'est ce que vous avez dans les choses shell Korn - il suffit de le faire dans le Perl à la place:
#!/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));
Cela ne suppose que vous avez le module POSIX; sinon, vous devrez faire à peu près le même printf() que vous avez utilisé. J'utilise aussi le format ISO 8601 pour les dates par préférence (également utilisé par XSD et SQL) - d'où le format illustré.
Vous avez laissé de côté samedi ... –
Scratch qui - il est couvert par le réglage par défaut de DAY_DIFF = 1 avant que l'affaire ... Il serait plus clair si le défaut était dans le cas. –
La réponse directe à la question "Comment ..." est: placer une citation avant et une autre après $ {DAY_DIFF} dans la commande perl. –