在shell脚本中进行条件控制以及使用循环
转载请标明:http://www.cnblogs.com/winifred-tang94/
if条件语句语法:
if [ 条件表达式 ]
then
代码
else
代码
fi
注意:在上面的if条件语句中,if和 [ 之间要有空格,而条件表达式和两边的 [ ] 都要有空格,条件表达式不能紧挨着 [ 和 ]。
if条件表达式以fi结束。
Eg.

结果出现了以下问题:

原因是因为开头在#!后还要有一个/,加上/后解释器错误没有了,代码如下:

可是仍然有没有那个文件或目录的错误。对于这个错误我觉得是echo后的表达式有问题,于是注销了表达式,改输出small和bigger,结果程序运行正确,输出了small或者bigger。

所以对于echo后的表达式,我把表达式加上双引号,结果运行成功,没有问题了。


利用case表达式进行条件判断:
case 变量 in
str1)
命令串;;
str2)
命令串;;
*)
Eg.


刚才之所以出错,是因为代码没有正确结尾,case条件语句在shell中应该以esca结尾。
又出现错误如下:

原因:
*后面的)为中文符号,将它改为英文符号,并且case条件语句的结束应该为esca而不是easc,修正后如下:

就正确了,正确结果如下:

在shell脚本中使用for循环
shell中可以使用三种循环:
A、for循环
第一种语法形式:
for var in list
do
命令串
done
注意上面的list的形式可以使用空格分隔的$1 $2 $3,或者空格分隔的值1 2 3。
第二种语法形式:
for var
do
命令串
done
在这种形式中,list被省略了,那么这时list就是指命令行参数,每次循环的var都是一个命令行参数。
eg.输出命令行参数的和

注意上面shell程序中echo命令的参数 -e是为了让\c 和\b生效,其中\c是表示输出加数后不换行,\b是退格的意思删除多余的+号。
运行脚本后出现错误:

原因:
expr不能喝test指令的-gt婚后在一起用,要不然将expr改为test,要不然将-gt改为>=
,值得注意的是>=前面要使用\。

仍然出错为:

原因为:
sum求和时,等号两端不能有空格。
改为:

运行后结果为:

B、while循环
语法格式:
while 条件表达式
do
命令行串;
done
eg.输出命令行每个参数

shift命令将命令行参数左移,是原来处于第二位的参数变成第一位然后输出。
结果为:

注意while循环的条件表达式也要用空格将条件表达式与 [ 和 ]分隔开来。
如果要在while中使用另一个变量n,要用 -n 的形式来表示在循环体中使用的一元表达式:

当然如果while中不添加-n也有一样的结果:

C、until循环
语法格式如下:
until 条件表达式
do
命令串;
done
在shell脚本中进行条件控制以及使用循环的更多相关文章
- shell脚本中,for基于列表进行循环的实现方法
需求描述: 在写脚本中需要这么个需求,需要对一个列表中的值进行循环 比如,列表中的值mysqld,zookeeper,hbase 简单来说,for基于列表值的循环. 脚本测试过程: 1.测试脚本 #! ...
- shell脚本中的条件测试if中的-z到-d的意思
文件表达式 if [ -f file ] 如果文件存在if [ -d ... ] 如果目录存在if [ -s file ] 如果文件存在且非空 if [ -r file ] ...
- 【转】shell脚本中echo显示内容带颜色
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e.格式如下: echo -e "\033[41;36m something here \033[0m&qu ...
- shell脚本中echo显示内容带颜色
转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要 ...
- shell脚本中常见的一些特殊符号和作用详解
这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...
- shell脚本进阶之条件测试与条件语句
接着上篇博客,今天整理一下关于条件测试和条件语句方面的知识. shell脚本进阶之条件测试 在编写shell脚本时,经常需要对一些条件进行判断,可以使用测试命令test辅助完成测试过程.t ...
- Shell脚本中使用function(函数)示例
这篇文章主要介绍了Shell脚本中使用function(函数)示例,本文着重讲解的是如何在shell脚本中使用自定义函数,并给出了两个例子,需要的朋友可以参考下 函数可以在shell script ...
- [转帖]Shell脚本中的break continue exit return
Shell脚本中的break continue exit return 转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 cont ...
- shell脚本中给字符串添加颜色
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: ec ...
随机推荐
- 深入理解JVM虚拟机-2自动内存管理机制
java虚拟机所管理的内存将会包括一下几个运行时数据区域. 程序计数器: 程序计数器是一块较小的内存空间.字节码解析式工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支.循环.跳转 ...
- 第二章 Python基本元素:数字、字符串和变量
Python有哪些内置的数据类型: True False #布尔型 42 100000000 #整型 3.14159 1.0e8 #浮点型 abcdes #字符串 2.1 变量.名字和对象 pytho ...
- ODS浅谈
ODS和DW 根据Bill.Inmon的定义,“数据仓库是面向主题的.集成的.稳定的.随时间变化的,主要用于决策支持的数据库系统” : ODS (Operational Data Store)操作型 ...
- xocde 静态类库 相对路径 与 绝对路径
xocde 静态类库 相对路径 与 绝对路径 导入别人的 静态类库,通常我直接用鼠标把文件夹拉到了 xcode的项目里面: 这时,导入的静态类库路径变成了,绝对路径:如果你的项目,不换位置那么编译运行 ...
- 小心Windows7的UTF-8代码页
目录 第1章小心Windows7的UTF-8代码页 1 1.1 UTF-16与UTF-8相互转换 1 1.1.1 使用Windows API 1 1.1.2 自己编码 1 1. ...
- 【转】 C++中delete和delete[]的区别
一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论.做个备份,以免丢失. C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete ...
- linux笔记:linux常用命令-网络命令
网络命令:ping(测试网络连通性) 网络命令:ifconfig(查看和设置网卡信息) 注意:在查看网卡信息时,直接输入ifconfig命令即可. 网络命令:last(列出目前和过去登入系统的用户信息 ...
- 【MYSQL】update/delete/select语句中的子查询
update或delete语句里含有子查询时,子查询里的表不能在update或是delete语句中,如含有运行时会报错:但select语句里含有子查询时,子查询里的表可以在select语句中. 如:把 ...
- Qt之QRadioButton
简述 QRadioButton部件提供了一个带有文本标签的单选框(单选按钮). QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮.单选框通常呈现 ...
- JavaWeb基础:Servlet Response
ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...