сравнение в скрипте с делением всегда дает ложь - PullRequest
1 голос
/ 27 октября 2011

Я пишу очень простое сравнение в сценарии оболочки Bash, но я никогда не получаю его правильно:

count = 0

if [ expr $count / 4 = 0 ];
then
  echo "yes";
else
  echo "no";
fi

всегда дает нет?

Ответы [ 3 ]

5 голосов
/ 27 октября 2011

Если вы хотите вызвать программу expr, вы должны вызвать ее:

if [ $(expr $count / 4) = 0 ]; then echo "yes"; else echo "no"; fi

Однако Bash может сделать это самостоятельно:

if (( $count / 4 == 0 )); then echo "yes"; else echo "no"; fi
3 голосов
/ 27 октября 2011

Вам необходимо использовать подстановка команд ($() или обратные метки), чтобы оценить выражение eval. Также используйте -eq для целочисленного сравнения :

if [ $(expr $count / 4) -eq 0 ];
then
  echo "yes";
else
  echo "no";
fi
0 голосов
/ 27 октября 2011

Как насчет этого

[[ count/4 -eq 0 ]] && echo 'yes' || echo 'no'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...