Хотя технически возможно выполнять арифметику дат в sed, это совсем не тот инструмент, который нужен для этой работы. Используйте такие инструменты, как awk или perl, в которых встроена целочисленная арифметика.
Ваше требование необычно для манипуляций с датой, поэтому вам понадобится богатая библиотека манипуляций с датой, если вы не хотите жестко кодировать арифметику даты. В Date::Manip
Perl есть такие функции, как Date_DaysInMonth
.
#!/usr/bin/env perl
use strict;
use warnings;
use Date::Manip;
use List::Util qw(/./);
sub shift_month {
my ($delta, $y, $m, $d) = @_;
$m += $delta;
$y += $m / 12;
$m %= 12;
return ($y, $m, min($d, Date_DaysInMonth($m, $y)));
}
my $next_day = ParseDateDelta("1 day");
my ($cur, $end) = (ParseDate($ARGV[0]), ParseDate($ARGV[1]));
while (Date_Cmp($cur, $end) < 0) {
my @ymd = UnixDate($cur, qw(%Y %m %d));
foreach my $i (0..3) {
printf "%02d-%04d-%02d|", @{[shift_month($i, @ymd)]}[1, 0, 2];
}
$cur = DateCalc($cur, $next_day);
print "\n";
}
Если я правильно помню (Autofs кажется мне мощным, но запутанным )он должен работать так:
В файле /etc/auto.master.d/indirect.autofs:
/mnt/forindirect /etc/auto.indirect
И в /etc/auto.indirect:
* -rw,sync cent_ldap:/home/&
Затем проверьте с помощью:
ls -l /mnt/forindirect/user1 /mnt/forindirect/user2 /mnt/forindirect/user3