7.shell脚本基础笔记-shell算术表达式与其他操作
hi,我是温新,一名PHPer
总觉得自己被束缚了,但那个束缚自己的人不是别人,而自己!
Linux中变量的值默认是字符串,如果要对变量进行整型间的运算,就必须使用整型变量。如下案例得到的结果是字符串。
a=1
b=1
echo $a+$b # 1+1
整型变量的声明及语法
方式1,声明整型变量:declare -i 变量名
方式2,进行整型运算:(())
# 方式一
declare -i sum
a=1
b=2
sum=a+b
echo $sum # 3
# 方式二
((sum = 2 + 3))
echo $sum # 5
(())中可以使用空格。
在算术表达式求值中引用变量时可以不使用 %
x=5
y=5
# (())中变量可以不使用 $
((sum = x + y))
echo $sum
注意:
declare -i是直接将变量声明为了整型,而(())仅仅是在运算过程中是整型,因此,运算结束后的变量的值实际还是字符串型。
除了上面的两种方式外,还有另外一种方式let,let等同于(()),不过它们有所区别。
# 两者的结果是一样的
((sum=1+1))
let total=1+1
与(())不同的是,使用let标记变量时,不能有空格或者特殊符号,若有空格则需要使用 引号 包括,如下案例:
let 'x = 1 + 1'
echo $x # 2
算术表达式展开操作
语法:$(())
$(()) 将括号内的算术表达式求值的结果进行展开,主要用于需要将计算结果用作命令的输入参数,或需要在字符中嵌入计算结果等。
z=$((3+5))
echo $z
进程替换
语法<(command) 或 >(command)
进程替换是把command的输出结果传递给另一个命令。
diff <(ls /tmp/) <(/home)
bash碰到<(command)时,首先会自动分配一个文件并使用该文件的路径替换(command)部分的内容。之后,进程替换括号内的命令的标准输出就会与新分配的文件相连。
历史记录展开
bash可以保存命令行输入的历史记录功能,可以使用方向键或Ctrl+P进行操作。
| 符号 | 含义 |
|---|---|
| ! | 开始历史记录替换 |
| !n | 获取第n条命令行 |
| ! -n | 获取当前命令往前的第n条命令 |
| !! | 获取上一条执行过的命令 |
| !string | 获取以string开头的最后执行的命令 |
| !?string? | 获取包含string的最后执行的命令 |
| ^str1^str2 | 将str1替换为str2后重复执行最后的命令 |
我是温新
每天进行一步点,就一点点
请登录后再评论