最终成果
data=$(cat /etc/frp/rebootnum)
echo $[ $data+1 ] > /etc/frp/rebootnum
----------------------------------------------------------
x=1+1
echo $x
你是不是期待着输出2啊?让你失望了,这样输出的结果是1+1。惊讶为什么呢?疑问这是因为在shell script中变量类型默认为“字符串”,所以若不指定变量类型,1+1是一个“字符串”而不是“计算式”。得意那么怎么得到我们想要的结果呢?疑问方法很多,但是总结起来就是两种,一种就是生命变量的类型。另一种是对特定的计算式进行处理。
1)首先看第一类方法:声明变量的类型
我对上述程序做出以下修改:
declare -i x
x=1+1
echo $x
在上述脚本中我把x声明为整型数字(integer)类型,这时输出结果为2
或者你可以这么写:
declare -i x
declare -i y
x=1
y=2
x=$x+$y
echo $x
输出结果为3,假如我没有声明 x, y 的类型为整型数字,那么输出结果是1+2
2)
a)使用let命令:(注意的是let仅支持整数运算)
let 'x=1+1'
echo $x
这时输出结果为2
b)使用$[ ]
x=1
y=2
x=$[ x+y]
echo $x
输出结果为:3
这里要注意的是注意:
$[]将中括号内的表达式作为数学运算先计算结果再输出
对$[]中的变量进行访问时加不加$无所谓
$[]支持的运算符与let相同,但也只支持整数运算
c)使用$(( ))
x=1
y=2
x=$(( x+y))
echo $x
输出结果是3