Как сравнить в сценарии оболочки? - PullRequest
8 голосов
/ 17 марта 2011

Как сравнить в сценарии оболочки?

Или почему следующий скрипт ничего не печатает?

Ответы [ 4 ]

10 голосов
/ 17 марта 2011

Для чисел используйте -eq, -ne, ... для равных, а не для равных, ...

x=1
if [ $x -eq 1 ]
then 
  echo "ok" 
else 
  echo "no" 
fi

А для других используйте ==, а не =.

4 голосов
/ 17 марта 2011

Краткое решение с ярлыком И и ИЛИ:

x=1
(( $x == 1 )) && echo "ok" || echo "no"
1 голос
/ 08 августа 2018

Вы можете сравнить в оболочке двумя способами

  1. Синтаксис с одной скобкой (if [ ])
  2. Синтаксис с двойными скобками (if (( )))

Использование синтаксиса с одной скобкой

Операторы: -

-eq равно

-ne не равно

-gt больше

-ge больше или равно

-lt меньше

-le меньше илиравно

В вашем случае: -

x=1
if [ $x -eq 1 ]
then 
  echo "ok" 
else 
  echo "no" 
fi

Синтаксис с двойными скобками

Конструкция с двойными скобками также является механизмом, разрешающим стиль Cманипулирование переменными в Bash, например, (( var++ )).

В вашем случае: -

x=1
if (( $x == 1 )) # C like statements 
then
    echo "ok"
else
    echo "no"
fi
1 голос
/ 17 марта 2011

Это зависит от языка.С bash вы можете использовать оператор ==.В противном случае вы можете использовать -eq -lt -gt для равных, ниже, чем больше.

$ x=1
$ if [ "$x" == "2" ]; then echo "yes"; else echo "no"; fi
no

Правка: добавлены пробелы вокруг == и проверено с 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...