You missed the $((...)) syntax as exemplified by the '(done-started)/60' just before it:
min_sec=$(((done-started)/60))":"
min_sec=${min_sec}$(((done-started)-(((done-started)/60)*60)+100))
What's the '+100' supposed to do? Add 100 to the remaining seconds? Or subtract 100 from it? (That is, increase or decrease the number of seconds?) The way it is now, the number of seconds will never be less than 100 and your ': -2' tweak will never trigger anyway.
What you are asking cannot be done. You cannot nest substitutions in the manner you wish, and getting the leading zero on the seconds is problematic using only bash.
I don't think you can put that many conditionals on a single line and have it remain comprehendable.
However, you might be able to do it using awk:
### Killall and Restore session
started=$(date +%s)
sleep 2
### Time
month=$(date +%B)
mon=$(date +%b)
d_y_t=$(date '+/%d/%Y %T')
done=$(date +%s)
min_sec=$(((done-started)/60))":"$(echo $done $started | awk '{s=($1-$2)%60; if (s==0) {s=2;} printf ("%2.2d", s);}')
echo
echo "Attended time to restore session: $min_sec"
echo -n "Session restored at " ; printf %9.9s $month ; echo $d_y_t
echo
But regardless, the line is going to be rather long. Unless you use a shell function:
getSeconds () {
echo $done $started | \
awk '{
s=($1-$2)%60;
if (s==0) {s=2;}
printf ("%2.2d", s);
}'
Then use:
min_sec=$(((done-started)/60))":"$(getSeconds)
But I still don't see what the '+100" is supposed to do.