3.8 其他运算工具(let/expr/be)
除了 Shell 本身的算数运算表达式,还有几个命令支持复杂的算数运算:
命令 | 描述 | 示例 |
---|---|---|
let | 赋值并运算,支持++、-- | let VAR=(1+2)*3 ; echo $VAR x=10 ; y=5 let x++;echo $x 每执行一次x 加 1 let y--;echo $y 每执行一次y 减 1 let x+=2 每执行一次x 加 2 let x-=2 每执行一次x 减 2 |
expr | 乘法需要加反斜杠转义\ | expr 1 \* 2 运算符两边必须有空格 expr \( 1 + 2 \) \* 2 使用双括号时要转义 |
bc | 计算器,支持浮点运算、平方等 | bc 本身就是一个计算器,可直接输入命令,进入解释器。echo 1 + 2 |bc 将管道符前面标准输出作为 bc 的标准输入echo "1.2+2" |bc echo "10^10" |bc echo 'scale=2;10/3' |bc 用 scale 保留两位小数点 |
由于 Shell 不支持浮点数比较,可以借助bc 来完成需求:
# echo "1.2 < 2" |bc
1
# echo "1.2 > 2" |bc
0
# echo "1.2 == 2.2" |bc
0
# echo "1.2 != 2.2" |bc
1
看出规律了嘛?运算如果为真返回 1,否则返回 0,写一个例子:
# [ $(echo "2.2 > 2" |bc) -eq 1 ] && echo yes || echo no
yes
# [ $(echo "2.2 < 2" |bc) -eq 1 ] && echo yes || echo no
no
expr 还可以对字符串操作:
获取字符串长度:
# expr length "string"
6
截取字符串:
# expr substr "string" 4 6
ing
获取字符在字符串中出现的位置:
# expr index "string" str
1
# expr index "string" i
4
获取字符串开始字符出现的长度:
# expr match "string" s.*
6
# expr match "string" str
3
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Eternal Night
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果