Use uma matriz em vez de tentar criar variáveis separadas.
declare -a x
for dy in {0..4}; do
x+=( "$( date -d "$mn $d - $dy days" +'%b %_d' )" )
done
Você pode acessar os quatro valores em ${x[0]}
até ${x[3]}
.
Para a primeira parte do seu script, você considerou usar uma declaração select
?
select mn in "Jan" "Feb" "Mar" "Apr" "May" "Jun" \
"Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
do
if [[ -z "$mn" ]]; then
echo "Invalid choice" >&2
else
break
fi
done
printf "You selected '%s'\n" "$mn"
Isso faz o seguinte:
1) Jan 3) Mar 5) May 7) Jul 9) Sep 11) Nov
2) Feb 4) Apr 6) Jun 8) Aug 10) Oct 12) Dec
#? 56
Invalid choice
#? 5
You selected 'May'
O valor de $mn
será a string selecionada ( May
, por exemplo).