Em ksh93
:
$ printf '%(%F)T\n' 'next month, first Monday'
2017-04-03
bash
, já que o 4.2 agora suporta %(<format)T
no seu printf
buitin, mas não a capacidade de analisar esse tipo de expressão de data.
Se você tivesse que usar bash
e queria usar esse %(<format>)T
, você ainda poderia fazer isso sem bifurcar com algo como:
printf -v code '%(
t=$((%s + (12 - %-H) * 60 * 60))
increment=$((8 - %u))
current_month=%m)T' -1
eval "$code"
until
t=$((t + increment * 24 * 60 * 60)) # next Monday around mid-day
printf -v code '%(date=%F month=%m)T' "$t"
eval "$code"
[ "$month" != "$current_month" ] # until be get to next month
do
increment=7 # the first increment is the number of days
# til Monday. Next increments are just a week.
done
echo "$date"