2011-08-30 146 views
13

我有兩個變量稱爲COUNT1和count7如何在Unix shell腳本中的變量中添加值?

count7=0 
count7=$(($count7 + $count1)) 

這顯示了一個錯誤「表達是不完整的;需要更多的令牌」。

我應該如何添加這兩個變量?

+0

什麼是'count1'設置爲?如果它沒有設置,它看起來像空字符串 - 這將導致無效的表達式。你在使用哪種外殼? –

+0

kshell和count1設置爲某個值。有沒有其他的方法可以讓我們從數組這樣的循環中連續地添加計數? – suvitha

+0

然後你需要解釋你真正的問題是什麼。一個可能的問題是,如果您有一個管道,並且將結果添加到管道中的一個循環中,那麼它將在一個子shell中處理,並且您無法獲取父shell中的更新結果。但是在我們做出診斷之前,你需要展示更多的代碼。你強烈展示的內容表明'$ count1'沒有設置爲你認爲它設置的內容。 –

回答

0

我沒有在UNIX系統下我的手,但是試試這個:

count7=$((${count7} + ${count1}))

或者你可能有不支持這種表達一個殼。 我認爲bash支持它,但sh不支持。

編輯:還有另外一種語法,請嘗試:

count7=`expr $count7 + $count1` 
20

什麼是count1設置爲?如果它沒有設置,它看起來像空字符串 - 這將導致無效的表達式。你在使用哪種外殼?

在bash 3.x中在MacOS X 10.7.1:

$ count7=0 
$ count7=$(($count7 + $count1)) 
-sh: 0 + : syntax error: operand expected (error token is " ") 
$ count1=2 
$ count7=$(($count7 + $count1)) 
$ echo $count7 
2 
$ 

你也可以使用${count1:-0}加0,如果$count1沒有設置。

+0

非常有用!謝謝! – emanuelcds

1

這裏有一個簡單的例子來添加兩個變量:

var1=4 
var2=3 
let var3=$var1+$var2 
echo $var3 
5

kshbashsh

$ count7=0      
$ count1=5 
$ 
$ ((count7 += count1)) 
$ echo $count7 
$ 5 
+0

也適用於sh ... – pkm

1

上面的腳本可能無法在KSH運行。你必須使用'let'opparand來確定這個值然後回顯它。

val1=4 

val2=3 

let val3=$val1+$val2 

echo $val3 
5
var=$((count7 + count1)) 

算術Bash使用$((...))語法。

你不需要$符號$(())

0
echo "$x" 
    x=10 
    echo "$y"`enter code here` 
    y=10 
    echo $[$x+$y] 

回答中:20

1

你可以做到這一點。對於快速計算可以更快:

echo $[2+2]