Ваша логика в порядке, но ваши операторы сравнения неверны, вы должны использовать '-eq' для сравнения целых чисел и '==' для строк.См. 'Man test' для быстрого ознакомления, хотя это также задокументировано в 'man bash'.
При использовании целочисленного сравнения всегда лучше инициализировать переменные также равными 0, иначе, если они не установлены, вы получите ошибки.
Как уже упоминалось в c00k, используйте [[вместо [если вы используете bash, поскольку он встроен, поэтому bash не нужно будет выкладываться для использования команды / usr / bin / [.
т.е.
a=0;b=0
# do something else with a or b
if [[ $a -eq 2 ]] || [[ $b -eq 4 ]]
then
echo "a or b is correct"
else
echo "a and b are not correct"
fi