3.3 shell控制流结构
shell中的控制流包括if then else语句,case语句,for循环,until循环,while循环,break控制,continue控制。
条件测试:
有时判断字符串是否相等或检查文件状态或是数字测试等,Test命令用于测试字符串、文件状态和数字。
文件状态测试:

在Linux下敲入命令,效果如下:

test -w tmp.txt和[ -w tmp.txt ]的作用是一样的。
也可以测试两个表达式,例如:[ EXPRESSION1 -a EXPRESSION2 ] 或者test EXPRESSION1 -a EXPRESSION2
示例程序如下:
#!/bin/bash [ -d test ] if [ $? -eq "" ];then
echo "file is exist";
else
echo "file not exist";
fi
执行结果如下:


字符串测试:

测试两个字符串是否相等,如下所示:

测试相等时, = 两边要有空格,给变量赋值时,=号两边不能有空格。
数值测试:

示例如下:

数字运算:

运算符测试如下:


要想执行正确的运算,加号两边要有空格。
if then else语句:
if 条件
then 命令
fi
示例:
if [ "13" -lt "12" ]
then echo "yes 13 is less than 12"
else
echo "NO"
fi
if [ "" -lt "" ] then echo "yes 13 is less than 12"
else
echo "NO"
fi
if [ "" -lt "" ];then
echo "yes 13 is less than 12"
else
echo "NO"
fi
执行结果如下:

if else then也可以写成下面的语法:
if 条件1
then
命令1
elif 条件2
then
命令2
else
命令3
fi
如下所示:

case语句:

示例程序如下:
#!/bin/bash echo "enter a num(1-3):" read num case $num in
)
echo "num is 1"
;;
)
echo "num is 2"
;;
)
echo "num is 3"
;;
y|Y)
echo "you select y"
;;
*)
echo "quit"
exit
;;
esac
执行结果如下:

basename可以从完整路径中取出文件名字:

for循环:

下图两个程序不一样,其中第一个是一个变量,第二个是三个变量:

再看一个for的示例程序:
#!/bin/bash for i in `cat file2.txt`
do
echo $i
done
其中in后面是反引号,里面的命令会执行,因此输出如下:

file2.txt中的内容如果是下面这样,那打印结果如何呢?

打印结果如下:

可见for循环在列表中取每一项的时候,换行符和空格都作为分隔符。
如果for语句的后面没有in语句,此时语句等价于: in $@
示例如下:

运行结果如下:

until循环:

awk从一行数据中提取1列, sed的用法为 sed 's/old/new/g' s表示替换,old是匹配到的老的数据,new是要替换成的新数据,g表示全部替换。

上述程序中,当锁文件不存在时,退出until循环,until的意思是直到这个条件为真,就退出。注意[ ]里面的取反!。
grep和awk小实例:

while循环:

示例如下:

上述程序中,循环读入名字。
从文件中读数据的示例如下:

这个格式是固定的,重定位的文件名只能写在done之后。按行读入。如果写在LINE之后,程序会出错。
break和cotinue:

示例如下:

while后面的冒号表示死循环。
continue用法示例如下:

3.3 shell控制流结构的更多相关文章
- shell控制流结构笔记
man test 可以看见这些 比较符号:-lt小于 -le小于等于 -gt大于 -ge大于等于 -ne不等于 -eq等于 < 小于(需要双 ...
- shell中的控制流结构
shell中的控制流结构 1.if...then..else..fi语句 2.case语句 3.for循环 4.until 语句 5.while循环 6.break控制 7.continue 控制 1 ...
- 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构
------- android培训.java培训.期待与您交流! ---------- 程序控制流结构:顺序结构:判断结构:选择结构:循环结构. 判断结构:条件表达式无论写成什么样子,只看最终的结构是 ...
- Shell脚本、Shell脚本结构、date命令的用法、变量
1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构: #!/bin/bash 以#!/bin/bash开头,即以/bin/ba ...
- 用call/cc合成所有的控制流结构
用call/cc合成所有的控制流结构 来源 https://www.jianshu.com/p/e860f95cad51 call/cc 是非常.非常特殊的,因为它根本无法用 Lambda 演算定义. ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...
- Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...
- For,while,case,shell循环结构
For,while,case,shell循环结构 案例1:使用for循环结构 案 ...
随机推荐
- django QueryDict对象
类的原型:class QueryDict[source] 在HttpRequest对象中,GET和POST属性都是一个django.http.QueryDict的实例.也就是说你可以按本文下面提供的方 ...
- 字符集(编码)转换_Qt532_QString
1.网上的资料: 1.1.参考网址:http://blog.csdn.net/changsheng230/article/details/6588447 1.2.网页内容: “ Qt 使用Unicod ...
- 定义c/c++全局变量/常量几种方法的区别
转自:http://www.cnblogs.com/yaozhongxiao/archive/2010/08/08/1795338.html 1. 编译单元(模块): 在ide开发工具大行其道的今天, ...
- Android 实现文件上传功能(upload)
文 件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的.下面是一个模拟网站程 序上传文件的例子.这里只写出了Android部分的 ...
- (转)不要自称是程序员,我十多年的 IT 职场总结
其他: 我是一名程序员,工作很努力,为什么绩效还总是垫底? 外企,中年失业何去何从? 来公司半年了,也悟出了一些道理. 如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是 ...
- C# Arc Gis实例教程——网络链接
http://www.doc88.com/p-305888679879.html http://www.doc88.com/p-992232217007.html http://www.cnblogs ...
- oracle传入一个可能为空的参数进行查询
在我们数据库的表中的某些字段可能为空,且传入的查询参数也可能为空. 例如 ,,); 其查询结果集如下 MAPPING_ID PARTY_ID VENDOR_ID SUPPLIER_REG_ID 332 ...
- eclipse编译zookeeper源码
使用版本zookeeper-3.4.6.jar 从官网下载zookeeper-3.4.6.tar.gz,解压缩到 D:\tools 文件夹,目录结构如下图. 1. Eclipse新建java工程: 2 ...
- logistic 回归与线性回归的比较
可以参考如下文章 https://blog.csdn.net/sinat_37965706/article/details/69204397 第一节中说了,logistic 回归和线性回归的区别是:线 ...
- 小程序数组型图片自适应效果的实现(交流QQ群:604788754)
//本例代码如有问题,请加群,下载今日日期文件,测试.(如对本例有疑问,也可加群咨询群主) WXML: <view class="imgbox"> <block ...