> [[ $Mail == 80* ]] && resMail=$(echo "mail.ru доступен --
> `date`") || resMail=$(echo "!!! MAIL.RU НЕ ДОСТУПЕН -- `date`") && ((res++))
> echo $resMail
> И вот с увеличением значения этой переменной только при недоступности сервиса я
> и застрял. В приведённом выше варианте скрипт неработоспособен, т. к. значение Практика "[[ условие ]] && команда1 || команда2" _не рекомендуется_ многими. И твой код - собственно пример, почему.
1. { { [[ == 80* ]] && resMail=$(...) } || resMail=$(...) } && ((res++))
1.1. Группировка команд и приоритеты тут _совсем_ не те, к которым ты привык в... ЯВУ. Здесь исполнение слева направо по одному и _не исполнение_ _одной_ команды, если [ну вы в курсе]. И переход к _следующей.
2. присваимание var=... _обычно_ имеет RC=0, но _может_ иметь и не-OK код возврата при $() вызовах внеш.программ (не в твоём коде: afaics date и echo обычно возвращают OK)
Поэтому
[[ условие ]] && var="строка1" || var="строка2"
работает, но с
[[ условие ]] && var="$(команда)" || var="строка2"
дело сложнее.
2.1. твой ((res++)) - частный (и более сложный, если угодно) случай этого
3. Три команды =много, но иногда можно. Четыре и с разными усл.операторами - почти всегда ошибка. В читаемости по кр.мере, даже если код _тщательно проверен и работает, "как надо".
> Если несложно, подскажите, как можно это реализовать, исходя из приведённой выше конструкции?
if [[ $Mail == 80* ]]; then
resMail="mail.ru доступен -- `date`"
else
resMail="!!! MAIL.RU НЕ ДОСТУПЕН -- `date`"
let res++
fi
> echo $resMail