2011-01-20 49 views

回答

22

無需expr,POSIX shell允許$(())算術評價:

echo $((x+1)) 

§2.6.4

1

嘗試 回聲$(($ X + 1))

我認爲僅適用於某些版本的bash是3個或更多的..

echo `expr $x + 1` 

將是另一個解決方案

+0

正如我在答覆中提到,'$(())`實際上是POSIX兼容的,而不是一個bash'ism。 – SiegeX 2011-01-20 18:11:29

0

我們使用expr爲:

echo `expr $x + 1` 
0

試試這個方法:

echo $(($X + 1)) 
3

嘗試雙括號:

$ x=7; echo $(($x + 1)) 
8 
0
$ echo $(($x+1)) 
8 

man bash來自:

算術展開

算術膨脹允許算術 表達式的求值和結果的替換。對於算術擴展格式 是:

$((expression)) 

表達被視爲好像它是雙 引號內,但括號內使用雙引號不是 特殊處理。表達式中的所有令牌都會經歷 參數擴展,字符串擴展,命令替換, 和引用移除。算術替換可以嵌套。

根據以下在算術評估中列出的規則 執行評估。如果表達式爲 無效,bash會打印一條指示失敗的消息,並且不會發生替換。

+2

沒有必要在`(())` – SiegeX 2011-01-20 18:10:23

3

您還可以使用bc實用程序:

$ x=3; 
$ echo "$x+5.5" | bc 
8.5 
+0

+1中爲'$`添加前綴變量,用於bc !!!!! – 2011-03-16 19:23:46