Цепочка !=
условий требует некоторой инверсии мышления.
Я предпочитаю более четкий путь к тестированию этих условий с использованием структуры case ... esac
.
case "${dbname}" in
abc_def_data|abc_def01_data)
#dbg echo "matched, but for real code replace with just a ':' char"
:
;;
*)
echo "didn_t match any expected values for \$dbname"
echo exit 1
;;
esac
Обратите внимание, что, как вы на самом деле пытаетесь найти *)
случая, действия для abc_def_data (etc)
матча может быть что угодно, но только перейти к следующему разделу коды, вам нужен будет только неопределенный ЦМД оболочечного :
.
Edit 1
Обратите внимание, что у меня есть echo exit 1
, просто так, если копировать/вставить это в командной строке, ваша оболочка не будет выхода. В реальном коде удалите echo
и ожидайте, что exit
будет работать.
Edit 2
Кроме того, обратите внимание, что |
символ в случае матча (abc_def_data**|**abc_def01_data
) является по существу OR
(я думаю, что это называется что-то еще в «случае матч» контекста).
IHTH
Вы никогда не используете $ server, это намеренно? – Daniele
Условие всегда верно. – Mithrandir
Я только скопировал часть кода ... $ server будет использоваться позже в скрипте ... @Daniele – MRKR