网站建设公司网,网站前端建设报价单,班级网站自助建设功能,wordpress登陆可见插件快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见#xff0c;博主会及时修改#xff09;
算术运算
算数运算符 - 加法减法
* / % 乘法 取商 取模(取余) 例如#xff1a;5除以2 商是2 余数(模)是…快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解如有不正确的地方欢迎各位小伙伴在评论区提意见博主会及时修改
算术运算
算数运算符 - 加法减法
* / % 乘法 取商 取模(取余) 例如5除以2 商是2 余数(模)是 1 5/2-----2 5%2-----1
** 幂运算 例如5的2次方 5**2------25 5的3次方 5**3------125-- 操作数自身增加或者减少1 例如 a a|| ! 逻辑与 逻辑或 取反(对于字符串也相当于比较) ! 小于 大于 小于等于 大于等于 等于 不等于- * / % 赋值运算符 num1 num1 num*3算数运算指令
(()) 经常用于整数运算 效率很高
let 用于整数运算 等同于 (())
expr 可用于整数运算,还有其他额外功能
bc [需要先安装] Linux下的一个计算器程序(适合整数以及小数运算)
$[] 用于整数运算算数运算符与算数运算指令
((ii1)) 运算后赋值。将 i1 的运算结果赋值给变量 i 若要打印 echo $((ii1))
i$((i1)) 将表达式运算后的结果赋值给 i
((8755)) 可以进行比较操作 还可以加入逻辑与 逻辑或 经常用于条件判断
echo $((21)) 打印输出运算表达式的结果 需要在 (())前添加 $案例:
## 1.有关逻辑运算 真(1) 假(0)
[rootbai ~]# echo $((87))
1
[rootbai ~]# echo $((67))
0
## 2. 逻辑运算符的演示 || !
[rootbai ~]# echo $((6734))
0
[rootbai ~]# echo $((67||34))
1
[rootbai ~]# echo $((7654))
1
[rootbai ~]# echo $[!((ia||bd))] #i1;a2;b3;d4
0
## 3.算数运算
[rootbai ~]# echo $((34)) # 加法
7
[rootbai ~]# echo $((3-4)) # 减法
-1
[rootbai ~]# echo $((3*4)) # 乘法
12
[rootbai ~]# echo $((4/3)) # 取商(取整)
1
[rootbai ~]# echo $((4%3)) # 取模(取余)
1
## 4. 幂运算
[rootbai ~]# echo $((5**2))
25
[rootbai ~]# echo $((5**3))
125
## 5. 给变量赋值
[rootbai ~]# num100
[rootbai ~]# ((numnum*3))
[rootbai ~]# echo $num
300
## 6. 小数运算
[rootbai ~]# ((c11002**31.2))
-bash: ((: c11002**31.2: 语法错误: 无效的算术运算符 错误符号是 .2
注意
(()) 只能对整数进行运算 ----- 小数运算需要使用 bc
## 7.特殊符号运算变量自增1
-- 变量自减1
a 先对变量a操作,然后再让a自增1
a 先让a自增1,然后再复制给
[rootbai ~]# a5
[rootbai ~]# echo $((a))
6
[rootbai ~]# echo $a
6
[rootbai ~]# b5
[rootbaizhi ~]# echo $((b))
5
[rootbaizhi ~]# echo $b
6
[rootbai ~]# c5
[rootbai ~]# echo $((c--))
5
[rootbai ~]# echo $c
4
[rootbai ~]# d5
[rootbai ~]# echo $((--d))
4
[rootbai ~]# echo $d
4let的使用
## let 对变量的数值运算
[rootbai ~]# num5
[rootbai ~]# let numnum4
[rootbai ~]# echo $num
9
[rootbai ~]# let num1.2
-bash: let: num1.2: 语法错误: 无效的算术运算符 错误符号是 .2expr
## expr命令不太好用,基于空格传入参数 但是在shell中一些字符具备特殊含义
[rootbai ~]# expr 53
53
[rootbai ~]# expr 5 3
8
[rootbai ~]# expr 5 * 3
expr: 语法错误
[rootbai ~]# expr 5 \* 3
15
[rootbai ~]# expr 5 \ 6
0
[rootbai ~]# expr 8 \ 6
1
## 注意 数值与运算符号之间需要加空格 运算符很容易识别失败 需要转义expr内置函数
length函数
## 案例
[rootbai ~]# expr length 123456789
9
[rootbai ~]# size123456789
[rootbai ~]# expr length $size
9
[rootbai ~]# size123456789
[rootbai ~]# expr length $size # 空格也算字符
9expr模式匹配
expr指令支持模式匹配功能
两个特殊符号
: 冒号用于计算字符串的字符数量 gaosc 5个字符
.* 任意的字符串重复0次或多次
最后的模式 支持自定义
## 语法
expr 字符串 : .*案例:
## 根据指定的字符获取 包括字符在内 字符及字符之前的 数量
[rootbai ~]# expr test.jpg : .*
8
[rootbai ~]# expr test.jpg : .*j
6
[rootbai ~]# expr test.jpg : .*p
7
[rootbai ~]# expr yc.png : .*\.png
6
[rootbai ~]# expr yc.png : .*\.jpg
0
[rootbai ~]# expr yc.jptg : .*\.jpg
0
[rootbai ~]# expr yc.jpggggggggggggggggggg : .*\.jpg
6bc指令
# 1. 安装 bc 软件
yum -y install bc
# 2.使用计算器
bcbc命令结合管道符来计算
案例1:
[rootbai ~]# echo 4*4
4*4
[rootbai ~]# echo 4*4 | bc
16
[rootbai ~]# echo 4.2*4 | bc
16.8
[rootbai ~]# num5
[rootbai ~]# echo $num*1.2 | bc
6.0
[rootbai ~]# resultecho $num*1.2 | bc
[rootbai ~]# echo $result
6.0案例2:
## 计算1~1000的和
数学公式
123456...9991000
方法1:
## 1.先想办法获取这些操作数
[rootbai ~]# echo {1..1000}
## 2.将数字之间的空格替换为
[rootbai ~]# echo {1..1000} | tr
## 3.将上一步处理以后的字符串交给 bc 进行运算
[rootbai ~]# echo {1..1000} | tr | bc
500500
方法2:
[rootbai ~]# seq -s 1000 | bc
500500
方法3:
[rootbai ~]# echo $((seq -s 1000))
500500
###补充
seq 数字 # 打印1 2 3 4 5 ... 数字 数字之间分隔符默认为换行
seq -s 数字连接符 数字 # 指定连接符连接 1 2 3 4.... 数字
### 例如
seq -s 10
输出 12345678910
方法4:
[rootbai ~]# seq -s 1000 | xargs expr
500500read指令
可以在程序运行过程中,程序员输入数据## 从标准输入中读取数据并赋值给指定变量
# 语法 read 变量名
[rootbai ~]# read var
123 # 借助键盘标注输入设备,录入数据以后 保存在 var变量中
[rootbai ~]# echo $var
123
## 从标准输入中输入多个值(用空格间隔),回车输入结束 第一个值给变量1 后续所有的值给变量2
## 语法 read 变量1 变量2
[rootbai ~]# read first last
123 456 789 000 111 222
[rootbai ~]# echo $first
123 # first保存第一个值
[rootbai ~]# echo $last
456 789 000 111 222 # 其余的值存入 last变量中
[rootbai ~]# read a b c # a b两个变量中各存一个值 其余赋值给 c
123 456 789 123
[rootbai ~]# echo $a
123
[rootbai ~]# echo $b
456
[rootbai ~]# echo $c
789 123## 若read后未指定变量名,则数据赋值给变量 REPLY
[rootbai ~]# read
123
[rootbai ~]# echo $REPLY
123## 把多个值存入一个变量中
语法
read -a 变量
[rootbai ~]# read -a array
123 456 789 456 789 123 000
[rootbai ~]# echo ${array[0]}
123
[rootbai ~]# echo ${array[6]}
000
[rootbai ~]# echo ${array[]}
123 456 789 456 789 123 000## 限定输入读取的时长
语法read -t 时间 变量
## 测试数据
read.sh
#!/bin/bash
echo 请在五秒内完成密码录入并回车,请输入密码
read -t 5 passwd ## 在5秒内完成信息录入并回车 否则数据不会保存
echo --------------------------
echo 您输入的密码为$passwd
## 操作界面
[rootbai bai]# ./read.sh
请在五秒内完成密码录入并回车,请输入密码
123456
--------------------------
您输入的密码为123456## 允许输入反斜杠
语法read -r 变量名
[rootbai bai]# read var
123 \[rootbai bai]# read -r var
123 \ 123 \ 123## 默认是 回车键代表结束输入
read -d 符号 变量名
[rootbai bai]# read -d : var
123 :[rootbai bai]# read -d : var
123
## 此时回车结束符被 冒号 覆盖## 从标准输入中读取两个字符 并存入变量 不需要按回车读取结束
语法
read -n 2 变量名
[rootbai bai]# read -n 2 var
12