首页 技术 正文
技术 2022年11月15日
0 收藏 991 点赞 4,032 浏览 1714 个字

shell脚本的运算符与流程控制

1.运算符

1.1 算术运算符

+

*

/

%

[root@MiWiFi-R3-srv ~]# echo $[3+1]
4

1.2 关系操作

与(())连用

<

>

<=

>=

==

!=

&&

||

test命令相关,[]可以达到一样的效果
[root@MiWiFi-R3-srv ~]# x=1
[root@MiWiFi-R3-srv ~]# [ $x -gt 1 ]
[root@MiWiFi-R3-srv ~]# echo $?
0

1.3 赋值运算符

=

+=

*=

/=

%=

[root@MiWiFi-R3-srv ~]# x=10
[root@MiWiFi-R3-srv ~]# ((x%3))
[root@MiWiFi-R3-srv ~]# echo $x
10
[root@MiWiFi-R3-srv ~]# 
[root@MiWiFi-R3-srv ~]# ((x%=3))
[root@MiWiFi-R3-srv ~]# echo $x
1

1.4 shell里的所有计算器
$[] (()) $(()) expr bc bc -l

浮点运算:yum install bc -y

[root@MiWiFi-R3-srv ~]# echo ‘scale=2;1/3’|bc -l
.33

1.5 测试操作

命令执行后会返回到一个系统变量中 $?
如果$?值为0 表示命令执行成功 否则为失败

测试命令 test [ ] [[ ]] (( ))
打开man test 逐一介绍每个参数
1.6、测试文件状态
-d 目录
-s 文件长度 > 0、非空
-f 正规文件
-w 可写

-r 可读

-x 可执行

-L 符号连接

-u 文件有 suid 位设置

1.7、字符串测试
= 两个字符串相等
!= 两个字符串不相等
-z 空串
-n 非空串

[root@MiWiFi-R3-srv ~]# var1=’abc’
[root@MiWiFi-R3-srv ~]# var2=’123′
[root@MiWiFi-R3-srv ~]# [ $var1 == $var2 ]
[root@MiWiFi-R3-srv ~]# echo $?
1

1.8、测试数值
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

[root@MiWiFi-R3-srv ~]# [ 10000 -gt 250 ] #不要使用大于号小于号等于号等,要使用man test中规定的,详见下一小节4拓展
[root@MiWiFi-R3-srv ~]# echo $?
0

1.9、拓展测试符号 [[ ]] (())
数字测试符号
# [ 10 < 2 ] # 语法错误
-bash: 2: 没有那个文件或目录

# [[ 2 > 10 ]] # 结果错误
# echo $?
1
# [[ 20 > 10 ]] # 正确
# echo $?
0
# (( 10 < 20 ))
# echo $?
0

字符测试
# [ “aa” = “aa” ]
# echo $?
0
# [[ “aa” = “aa” ]]
# echo $?
0
# (( “aa” = “aa” )) #结果错误
# echo $?
1
混合测试
# [ a = a -a 10 < 20 ]
-bash: 20: 没有那个文件或目录
[root@seker ~]# [[ a = a -a 10 < 20 ]]
-bash: syntax error in conditional expression
-bash: syntax error near `-a’
[root@seker ~]# [[ a = a && 10 < 20 ]]
[root@seker ~]# echo $?
0
[root@seker ~]# [[ a = a || 10 < 20 ]]
[root@seker ~]# echo $?
0
[root@seker ~]# (( a = a || 10 < 20 ))
[root@seker ~]# echo $?
0
[root@seker ~]# (( a = a && 10 < 20 ))
[root@seker ~]# echo $?
0

二.流程控制

1.if的使用

if通常 是

if [判断条件];then      #如果条件满足那么

echo ‘输出内容’          #输出内容

else

echo ‘输出内容’        #否则输出

fi                         #fi来关闭

也可以加elif来实现多次判断

2.循环控制

while  (条件)

do    动作

done      完成

如果while后面加:那么这条控制进入无限循环。

for循环

for i in [1..100]

do

done

for循环的语法结构

在循环中

利用continue   在某一层进行循环的退出操作。

而break则是某一块进行循环的退出操作。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,498
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,911
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,745
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,501
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,139
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,303