7.shell脚本基础笔记-shell算术表达式与其他操作

作者: 温新

分类: 【Linux】

阅读: 1257

时间: 2022-03-07 13:59:37

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是直接将变量声明为了整型,而(())仅仅是在运算过程中是整型,因此,运算结束后的变量的值实际还是字符串型。

除了上面的两种方式外,还有另外一种方式letlet等同于(()),不过它们有所区别。

# 两者的结果是一样的
((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后重复执行最后的命令

我是温新

每天进行一步点,就一点点

请登录后再评论