如何在Unix shell脚本中在变量中添加值?

如何在Unix shell脚本中在变量中添加值?,unix,Unix,我有两个变量叫count1和count7 count7=0 count7=$(($count7 + $count1)) 这显示一个错误“表达式不完整;需要更多标记” 如何添加这两个变量?我手头没有unix系统,但请尝试以下方法: count7=$(${count7}+${count1})) 或者你的shell不支持这个表达式。 我认为bash确实支持它,但是sh不支持它 编辑:还有另一种语法,请尝试: count7=`expr $count7 + $count1` count1设置为什么?如

我有两个变量叫count1和count7

count7=0
count7=$(($count7 + $count1))
这显示一个错误“表达式不完整;需要更多标记”


如何添加这两个变量?

我手头没有unix系统,但请尝试以下方法:

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

或者你的shell不支持这个表达式。 我认为
bash
确实支持它,但是
sh
不支持它

编辑:还有另一种语法,请尝试:

count7=`expr $count7 + $count1`

count1
设置为什么?如果未设置,则看起来像是空字符串-这将导致表达式无效。你用的是哪个外壳

在MacOS x 10.7.1上的Bash 3.x中:

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

如果
$count1
未设置,也可以使用
${count1:-0}
添加0。

下面是一个简单的示例,可以添加两个变量:

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

ksh
bash
sh

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

上述脚本可能无法在ksh中运行。您必须使用“let”opparand来赋值,然后回显它

val1=4

val2=3

let val3=$val1+$val2

echo $val3 
bash中的算术使用
$(…)
语法

您不需要在
$(())


回答:20

你也可以这样做。可以更快地进行快速计算:

echo $[2+2]

count1
设置为什么?如果未设置,则看起来像是空字符串-这将导致表达式无效。您使用的是哪个shell?kshell和count1设置为某个值。有没有其他方法可以将循环数组中不断出现的计数相加?那么,您需要解释真正的问题是什么。一个可能的问题是,如果您有一个管道,并且正在管道中的循环中添加结果,那么它将在子shell中处理,并且您无法在父shell中获得更新的结果。但在我们做出诊断之前,您需要显示更多的代码。您显示的内容强烈表明,
$count1
未设置为您认为设置的值。非常有用!非常感谢。
 echo "$x"
    x=10
    echo "$y"`enter code here`
    y=10
    echo $[$x+$y]
echo $[2+2]
read num1
read num2
sum=`expr $num1 + $num2`
echo $sum