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后重复执行最后的命令 |
我是温新
每天进行一步点,就一点点
请登录后再评论