У меня есть следующий скрипт:
#!/bin/sh r=3 r=$((r+5)) echo r
Однако я получаю эту ошибку:
Синтаксическая ошибка в строке 3: $ непредвиденный.
Я не понимаю, что я делаю неправильно. Я слежу за этим онлайн руководство к письму http://www.unixtutorial.org/2008/06/arithmetic-operations-in-unix-scripts/
Звучит нормально, если вы используете bash, но $((r+5)) может не поддерживаться, если вы используете другую оболочку. На что указывает /bin/sh? Рассматривали ли вы заменить его на /bin/bash, если он доступен?
bash
$((r+5))
/bin/sh
/bin/bash
Шебанг - твоя проблема.Баш не ш.Измените его на #!/bin/bash, и оно будет работать.Вы также захотите echo $r вместо echo r.
#!/bin/bash
echo $r
echo r
Для выполнения математических операций (включая десятичные дроби / числа с плавающей запятой) вы можете использовать awk или bc/dc.
awk
bc/dc
awk -vr="$r" 'BEGIN{r=r+5;print r}'
или
echo "$r+5" | bc
Возможно, вы захотите попробовать следующее:
#!/bin/sh r=3 r=$((r + 5)) echo $r
У меня работает (печать 8), если изменить echo r на echo $r.Какую версию sh вы установили?Какой дистрибутив unix?
8
sh