这篇文章上次修改于 415 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
双小括号 (())
- 整数扩展。这种扩展计算是整数型的计算,不支持浮点型。((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。若是逻辑判断,表达式exp为真则为1,假则为0。
[root@master236 ~]# i=0
[root@master236 ~]# ((i=i+i))
[root@master236 ~]# $?
bash: 1: 未找到命令...
[root@master236 ~]# ((i=i+1))
[root@master236 ~]# $?
bash: 0: 未找到命令...
[root@master236 ~]# echo $i
1
[root@master236 ~]# i=$((i+4))
[root@master236 ~]# echo $i
5
[root@master236 ~]#
[root@master236 ~]# echo $((7>6 && 5>3))
1
[root@master236 ~]# echo $((7>6 && 5>8))
0
[root@master236 ~]#
let 命令
[root@master236 ~]# num=10
[root@master236 ~]# let total=num+5
[root@master236 ~]# echo $total
15
[root@master236 ~]#
$[] 命令
- $[ ]只能进行整数运算。但是只能对单个表达式的计算求值与输出,不能多个同属进行
- $[ ]会对表达式进行计算,并取得计算结果
- 表达式内部不可以赋值给变量没有(())功能强大
[root@master236 ~]# a=1
[root@master236 ~]# b=2
[root@master236 ~]# echo $[a+b]
3
[root@master236 ~]# echo $[a]
1
[root@master236 ~]# echo $[a++]
1
[root@master236 ~]# echo $[a]
2
[root@master236 ~]# echo $[$a+3]
5
[root@master236 ~]# c=$[a**3]
[root@master236 ~]# echo $c
8
expr 命令
- expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具有几个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等
# 数值运算
[root@AY140330180959236303Z ~]# expr 1 + 3
4
[root@AY140330180959236303Z ~]# expr 2 \* 3
6
# 获取字符串长度
[root@AY140330180959236303Z ~]# expr length "123qac"
6
# 获取子串命令
# 命令格式: substr STRING POSITION LENGTH
# 返回STRING字符串中从POSITION开始,长度最大为LENGTH的子串。如果POSITION或LENGTH为负数,0或非数值,则返回空字符串。POSITION 从1开始
[root@AY140330180959236303Z ~]# expr substr "123qaz" 2 3
23q
# 匹配模式
# "string : REGEX"字符串匹配示例。要输出匹配到的字符串结果,需要使用"\("和"\)",否则返回的将是匹配到的字符串数量。
# 等同于命令 "match STRING REGEX"
# 注意,由于REGEX中隐含了"^",所以使得匹配时都是从string首字符开始的
[root@AY140330180959236303Z ~]# expr 123456tg : '[0-9]\+'
6
[root@AY140330180959236303Z ~]# expr 123456tg : '\([0-9]\+\)'
123456
# 查找
# "index string chars"
# 该表达式是从string中搜索chars中某个字符的位置,返回在string中最靠前的字符的位置
[root@AY140330180959236303Z ~]# expr index "123qaz" "aq"
4
# 该命令将对字符串"aq"逐字符分解,首先分解得到第一个字符a,从123qaz中搜索到a的位置为5,再分解得到第二个字符q,该字符在123qaz中的位置为4,其中q是最靠前的字符,所以命令返回的结果为4
[root@AY140330180959236303Z ~]# expr index "123qaz" "87"
0
# 字符串123qaz中没有8和7, 所以返回0
# "+ token" 用法
# expr中有些符号和关键字有特殊意义,如"match"、"index"、"length",如果要让其成为字符,使用该表达式将任意token强制解析为普通字符串
[root@AY140330180959236303Z ~]# expr length "index"
expr: syntax error
[root@AY140330180959236303Z ~]# expr length + "index"
5
bc 命令
- bc可用于浮点数的计算,是linux中的计算器。该命令功能丰富,支持自定义变量、自定义函数表达式逻辑、支持科学计算等等
# 使用管道符进行bc运算
[root@AY140330180959236303Z ~]# echo 1+1 | bc
2
[root@AY140330180959236303Z ~]# echo 2*3.3 | bc
6.6
# 计算1=2+3+4+5
[root@AY140330180959236303Z ~]# seq -s "+" 5 | bc
15
[root@AY140330180959236303Z ~]# expr `seq -s " + " 5`
15
# 进入bc进行运算
# bc运算器有一个内建的变量scale,用于表示计算的精度(其实是刻度),即小数位保留几位。默认刻度为0,所以除法运算的默认结果是整数
[root@AY140330180959236303Z ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
a=2
a++
2
a
3
++a
4
a
4
++a
5
b=2
c=a/b
c
2
# bc运算器有一个内建的变量scale,用于表示计算的精度(其实是刻度),即小数位保留几位。默认刻度为0,所以除法运算的默认结果是整数
scale=2
c=a/b
c
2.50
没有评论
博主关闭了评论...