Eu presumo que você tentou um único comando.
Não consegui encontrar uma, mas adaptei a esta resposta para fazer o que você quer:
# Assume that date1 is already set to "30-AUG-2015"
try_date="$date1"
while [ "$(date --date="$try_date" +"%A")" != Saturday ]
do
try_date=$(date --date="$try_date + 1 day" +"%d-%b-%Y")
done
date2="$try_date"
echo "$date2"
Saída:
05-Sep-2015
Você pode alterar a linha while
para
-
while [ "$(date --date="$try_date" +"%a")" != Sat ]
ou
-
while [ "$(date --date="$try_date" +"%5")" != 6 ]
(use 1
para segunda-feira… 7
para domingo)
Se $date1
for "29 de agosto de 2015" (que é um sábado),
então $date2
será "29 de agosto de 2015" (ou seja, no mesmo dia).
Se você ainda quiser obter 05-Set-2015 para esta entrada
(ou seja, no próximo sábado após $date1
), altere a primeira linha
para try_date=$(date --date="$date1 + 1 day" +"%d-%b-%Y")
.
Se você realmente deseja o mês em todas as maiúsculas (por exemplo, "SEP"), use tr
.