2010-10-07 62 views
1

執行算術表達式我有以下腳本:我無法在UNIX

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

不過,我得到這個錯誤:

語法錯誤在第3行:$意外。

我不明白我在做什麼錯。我正在關注該信的在線指南http://www.unixtutorial.org/2008/06/arithmetic-operations-in-unix-scripts/

+0

你可能需要用'回聲$ r',而不是'回聲r'反正。 – Bruno 2010-10-07 16:07:41

+0

'((r = r + 5))或'((r + = 5))'也應該起作用。 – 2010-10-07 18:52:27

回答

3

此,如果您使用bash聽起來不錯,但如果你正在使用另一個shell $((r+5))可能不支持。 /bin/sh指向什麼?如果可用,您是否考慮用/bin/bash替代它?

+0

這正是問題所在。謝謝! – Waffles 2010-10-10 18:27:06

0

它適用於我(打印8),如果您將echo r更改爲echo $r。你安裝了什麼版本的sh?什麼unix發行版?

+1

如果它適合你,那是因爲你的sh是bash,而bash並不嚴格禁止在運行時使用bash特定的擴展名作爲sh – Daenyth 2010-10-07 16:14:15

+0

@Daenyth:yup你說得對,'/ bin/sh --version'打印' GNU bash,......對我來說。 – Ether 2010-10-07 16:21:16

0

你可能想嘗試以下操作:

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

shebang線是你的問題。 bash不是sh。將其更改爲#!/bin/bash,它將起作用。您還需要echo $r而不是echo r

0

對於做數學(包括小數/浮點數),您可以使用awkbc/dc

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

echo "$r+5" | bc