Что не так в следующем условном выражении в bash? - PullRequest
1 голос
/ 09 февраля 2011

Что не так в следующем условном выражении в bash?

if [[ -z $x -o $x -ge 100 -o $x -le -100 ]]; then
        echo $x "\t" $i
fi

Я получаю следующую ошибку
Синтаксическая ошибка в условном выражении
Синтаксическая ошибка вблизи -o

Спасибо.

1 Ответ

4 голосов
/ 09 февраля 2011

просто используйте || следующим образом:

if [[ -z $x || $x -ge 100 || $x -le -100 ]]; then

[ является синонимом для теста - фактически, в некоторых системах / bin / [указывает на / bin / test:

$ which [
/usr/local/bin/[

флаг -o для теста выполняет ИЛИ

флаг -o для [[ (встроенная функция bash) проверяет, установлена ​​ли опция оболочки [например, -o vi дляредактирование vi]

...