Мне нужно сравнить переменную с несколькими переменными, как показано ниже.
if [ [ "$SECONDS" -ne "$one" || "$SECONDS" -ne "$two" ] ]
Этот оператор выдает ошибку
[: missing `]'
Как я могу сравнить значение СЕКУНД с единицей и двумя. Все это целочисленное сравнение.
Правильный синтаксис if
для выражений в удар эта ссылка :
Таблица 7-2. Объединение выражений
Operation Effect
------------------ ------------------
[ ! EXPR ] True if EXPR is false.
[ ( EXPR ) ] Returns the value of EXPR. This may be used to override the normal precedence of operators.
[ EXPR1 -a EXPR2 ] True if both EXPR1 and EXPR2 are true.
[ EXPR1 -o EXPR2 ] True if either EXPR1 or EXPR2 is true.
Ваш, если оператор должен быть похожим на это:
if [ "$SECONDS" -ne "$one" -o "$SECONDS" -ne "$two" ]
Можно также использовать [[
ключевое слово:
if [[ "$SECONDS" -ne "$one" || "$SECONDS" -ne "$two" ]];
Вот, это - диаграмма help [[
:
EXPR1 && EXPR2 True if both EXPR1 and EXPR2 are true; else false EXPR1 || EXPR2 True if either EXPR1 or EXPR2 is true; else false
, Когда Вы запускаете свой оператор с помощью [
затем пространство и другой [
; Bash будет думать, что Вы работаете test
(Сначала [
) на другом test
(второй [
).
И перед Вашим ||
это будет искать ]
литерал, не может найти его и жалуется на него.