У меня проблемы с выполнением арифметических выражений в UNIX - PullRequest
1 голос
/ 07 октября 2010

У меня есть следующий скрипт:

  #!/bin/sh
  r=3
  r=$((r+5))
  echo r

Однако я получаю эту ошибку:

Синтаксическая ошибка в строке 3: $ непредвиденный.

Я не понимаю, что я делаю неправильно. Я слежу за этим онлайн руководство к письму http://www.unixtutorial.org/2008/06/arithmetic-operations-in-unix-scripts/

Ответы [ 5 ]

3 голосов
/ 07 октября 2010

Звучит нормально, если вы используете bash, но $((r+5)) может не поддерживаться, если вы используете другую оболочку. На что указывает /bin/sh? Рассматривали ли вы заменить его на /bin/bash, если он доступен?

2 голосов
/ 07 октября 2010

Шебанг - твоя проблема.Баш не ш.Измените его на #!/bin/bash, и оно будет работать.Вы также захотите echo $r вместо echo r.

0 голосов
/ 08 октября 2010

Для выполнения математических операций (включая десятичные дроби / числа с плавающей запятой) вы можете использовать awk или bc/dc.

awk -vr="$r" 'BEGIN{r=r+5;print r}'

или

echo "$r+5" | bc
0 голосов
/ 07 октября 2010

Возможно, вы захотите попробовать следующее:

#!/bin/sh  
r=3  
r=$((r + 5))  
echo $r
0 голосов
/ 07 октября 2010

У меня работает (печать 8), если изменить echo r на echo $r.Какую версию sh вы установили?Какой дистрибутив unix?

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