Bash, если заявление дает противоположный ответ, чем ожидалось - PullRequest
0 голосов
/ 04 мая 2018

Я думаю, что упускаю что-то очень очевидное. Но не должен ли следующий код дать обратный ответ? Я подумал, что если выражение «if s == d» используется и s не равно d, тогда выражение if должно возвращать false и не запускать следующий код. Это не то, что происходит. Может кто-нибудь объяснить, что я пропустил. Я думаю, что это очень очевидно.

Спасибо

s=2
d=3
if ! [ "$s == $d" ]; then         echo "hello"; fi
if [ "$s == $d" ]; then         echo "hello"; fi
hello

1 Ответ

0 голосов
/ 04 мая 2018

Вы цитируете всю строку "$s == $d", когда должны быть в кавычках два аргумента "$s" и "$d".

Это означает, что вместо сравнения $s с $d вы проверяете, является ли "2 == 3" непустой строкой (то есть).

Это правильно выведет "не равно":

s=2
d=3
if ! [ "$s" == "$d" ]; then echo "not equal"; fi
if [ "$s" == "$d" ]; then echo "equal"; fi
...