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则是某一块进行循环的退出操作。

linux操作系统基础篇(九)的更多相关文章

  1. linux操作系统基础篇(二)

    Linux用户.群组.权限 1.用户也是由一个个文件组成的下列文件都是存放用户信息的文件 useradd user1 /etc/passwd: 存放用户信息  /etc/shadow/ :存放用户密码 ...

  2. linux操作系统基础篇(一)

    1.什么是linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序 ...

  3. linux操作系统基础篇(七)

    Linux服务篇(二) 1.nfs服务的搭建 安装: yum install rpcbind nfs-utils -y 配置: NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要 ...

  4. linux操作系统基础篇(六)

    linux服务篇 1.samba服务的搭建 samba的功能: samba是一个网络服务器,用于Linux和Windows之间共享文件.2. samba服务的启动.停止.重启service smb s ...

  5. linux操作系统基础篇(五)

    Linux网络以及rpm安装yum源的配置 1.Linux网络 1. 使用ifconfig命令来维护网络1) fconfig命令的功能:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址.2) ...

  6. linux操作系统基础篇(四)

    一.系统监控 1.TOP 命令 1) top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 2) 使用top命令列 ...

  7. linux操作系统基础篇(三)

    1.cat命令 cat除了可以用来查看文本文档还可以将两个文本文档纵向合并到另外一个文本文档中 比如 cat /etc/passwd /etc/group > 1.txt 2. 归纳了所有的压缩 ...

  8. linux操作系统基础篇(八)

    shell脚本的变量以及正则表达式 一.变量 含义:程序的运行就是一些列状态的变量->用变量值的变化去表示. 命名规则 以字母或下划线开头,剩下的部分可以是:字母.数字.下划线. 最好遵循下述规 ...

  9. Linux入门基础篇

    Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...

随机推荐

  1. webpack2使用ch9-处理模板文件 .html .ejs .tpl模板使用

    1 目录展示 安装依赖 "ejs-loader": "^0.3.0","html-loader": "^0.4.5", ...

  2. ASP.NET没有魔法——ASP.NET MVC 与数据库之EF实体类与数据库结构

    大家都知道在关系型数据库中每张表的每个字段都会有自己的属性,如:数据类型.长度.是否为空.主外键.索引以及表与表之间的关系.但对于C#编写的类来说,它的属性只有一个数据类型和类与类之间的关系,但是在M ...

  3. Linux上mysql的安装与配置

    前言 在我们使用Linux的过程中,可能会使用到数据库.那么,数据库的安装与配置就是我们需要掌握的了~所以呢,这篇博客小编就来给大家唠唠数据库的安装与配置. 说到编译安装,小编脑海里浮现的第一个方法就 ...

  4. 使用jquery.form.js文件进行文件上传

    本想着文件上传是一件挺简单的事,不过是获取文件地址保存到服务器而已,然而事实并非如此. 我信心满满的写下input type="file",alert input 的value,打 ...

  5. How to Add Columns to a DataGrid through Binding and Map Its Cell Values

    How to Add Columns to a DataGrid through Binding and Map Its Cell Values Lance Contreras, 7 Nov 2013 ...

  6. 数据迁移过程中hive sql调优

    本文记录的是,在数据处理过程中,遇到了一个sql执行很慢,对一些大型的hive表还会出现OOM,一步一步通过参数的设置和sql优化,将其调优的过程. 先上sql ) t where t.num =1) ...

  7. J2EE走向成功路-01-Struts2 配置

    配置环境 1.  导入jar包,Struts2官网:http://struts.apache.org/ 2.  创建Action类  继承ActionSupport  (ActionSupport类是 ...

  8. cocos2dx - tmx地图分层移动处理

    接上一节内容:cocos2dx - 节点管理 瓦片地图(Tiled Map) 在cocos2dx文档中有简单的介绍及使用.详情可以看:http://www.cocos2d-x.org/docs/man ...

  9. OpenGL ES2.0光照

    一.简单光照原理 平行光(正常光) 光照效果=   环境颜色 + 漫反射颜色 + 镜面反射颜色 点光源 光照效果=   环境颜色 + (漫反射颜色 + 镜面反射颜色)× 衰减因子 聚光灯 光照效果= ...

  10. Python通过future处理并发

    future初识 通过下面脚本来对future进行一个初步了解:例子1:普通通过循环的方式 import os import time import sys import requests POP20 ...