shell流程控制&函数
条件
if-then-elif-then-fi
if的条件部分经常使用test EXPRESSION
或[ EXPRESSION ]
实现,test的用法可以参见test
if 条件1 #if 条件1;then
then
执行语句1
elif 条件2 #elif 条件2;then
then
执行语句2
else
执行语句3
fi #条件结束标识,即将if反过来
举个栗子
#!/bin/sh
var="a test string"
if [ '$var' = 'a test string' ];then #重要的事情:1.[ ]里的表达式两边各有一个空格,=两边也各有一个空格。2. 字符串比较可以使用=或==
echo 'We find $var'
else
echo 'We do not know the value of $var'
fi
输出结果:
$ ./shell_if.sh
We find $var
选择
case-esac
case适合处理多个分支的情况
case $var in
模式1)
执行语句1
;;
模式2)
执行语句2
;;
*) #其他情况
执行语句3
esac #就是case反过来
举个栗子:
#!/bin/sh
var=4
case $var in
[a-z]|[A-Z]) #表示a-z或A-Z
echo "This is a letter"
;;
[0-9])
echo "This a number"
;;
1[0-9]) #表示10到19的数字,不能写[10-19]
echo "This is a number between 10 and 19"
;;
*)
echo "This is neither a letter nor a number"
;;
esac
执行结果:
$ ./Shell_case.sh
This a number
循环
while-do-done
条件满足就执行循环体
while 条件
do
循环体
done
until-do-done
不断执行循环体直到条件得到满足
until 条件
do
循环体
continue
break
done
for-do-done
每次循环var都取一个cand的值并执行循环体,循环的执行次数取决于单词表的个数,for会隐含的对变量进行逐个单词的赋值,所以不是用的$var
,而是var
for var in cand1 cand2 cand3...
do
循环体
continue
break
done
shell script也接受类C的for循环写法
for ((i=0;i<6;i++)){
循环体
continue
break
}
函数
和其他语言一样,shell脚本的函数也是对功能代码块的封装
定义
ATTENTION:shell函数的定义中的()
只是表示这是一个函数的定义,里面不放任何参数
#定义一个函数
fcn_name (){
...
echo $1
return $A
}
调用
使用函数的时候只要直接使用函数名即可
#无参数
fcn
#有参数
fcn para1 para2
#有返回值
fcn para1 para2
ret=$?
shell流程控制&函数的更多相关文章
- Shell 流程控制-if for case while until break continue
Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { ...
- 九、Shell 流程控制
Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { ...
- golang(3):strings和strconv使用 & 时间和日期类型 & 指针类型 & 流程控制 & 函数
strings和strconv使用 . strings.HasPrefix(s string, prefix string) bool: // 判断字符串s是否以prefix开头 . . string ...
- 吴裕雄--天生自然ShellX学习笔记:Shell 流程控制
和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search(q); ...
- 『忘了再学』Shell流程控制 — 33、if条件判断语句(一)
目录 1.单分支if条件语句 2.双分支if条件语句 (1)示例1 (2)示例2 什么是流程控制? 普通理解:Shell编写的程序是顺序执行的,也就是说第一命令先执行,然后接着执行第二条命令,然后再下 ...
- 『忘了再学』Shell流程控制 — 39、特殊流程控制语句
目录 1.特殊流程控制语句介绍 2.exit语句 3.break语句 4.continue语句 1.特殊流程控制语句介绍 Shell程序或者说其他的程序,都是顺序执行的,也就是第一行执行完再执行第二行 ...
- SHELL编程笔记(二)之shell流程控制
Shell控制流程结构 本章内容有: 退出状态 While.for和until loops循环 If then else语句 脚本中动作 菜单 条件控制语句 If then els ...
- linux shell学习之shell流程控制
在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构 ...
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...
随机推荐
- Struts 2.3.24源码解析+Struts2拦截参数,处理请求,返回到前台过程详析
Struts2官网:http://struts.apache.org/ 目前最新版本:Struts 2.3.24 Struts1已经完全被淘汰了,而Struts2是借鉴了webwork的设计理念而设计 ...
- Web-Nginx配置
#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; ...
- CodeBlock
CodeBlock官网是: http://www.codeblocks.org/ 选择Download the binary release: 根据自己电脑的情况选择想要的版本:(以博主电脑为例,wi ...
- selenium webdriver读取excel进行数据驱动测试
最近做自动化需要从文件读取数据做参数化,网上发现一个不错的解决方案. 准备:新建一个excel文件,文件名为测试类名,sheet名为测试方法名 excel第一行为标题,从第二行开始为测 ...
- 使用ADO.NET执行SQL脚本
public void ExecuteSql(SqlConnection connection, string sqlFile) { string sql = ""; using ...
- Android应用开发基础之十一:新特性
Fragment 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容 生命周期方法跟Activity一致,可以理解把其为就是一个Activity 定义布局文件作为Fra ...
- SlidesJS - 老牌的响应式 jQuery 幻灯片插件
SlidesJS 是一款老牌的 jQuery 幻灯片插件,经过多年的发展,已经成为一款功能齐全,设计精巧的幻灯片插件.支持循环.自动播放功能和淡入淡出过渡效果,并且能够自动生成分页,可以帮助开发者制作 ...
- HTML Minifier - 灵活的在线 HTML 压缩工具
HTML Minifier 是一个高度可配置的,经过良好测试的,基于 JavaScript 的 HTML 在线压缩工具,用棉绒般的能力.在它的核心, Minifier 依赖于 John Resig 的 ...
- ABAP 动态生成内表的几种方法
最近要写个程序,既有更新的,也有删除的,需要涉及到很多系统表,如果一个表一个表进行更新或者删除太慢了,于是就想通过创建动态内表来实现这些功能,在网上找了一些资料,经过多次尝试,终于测试成功了.网上讲述 ...
- sap后台作业管理/sap打印管理
sap后台作业管理: 后台作业,主要用于运行需要处理大量数据,对交互没有要求的程序.个人认为,简单的创建,配置和监控后台作业没有什么难度.后台作业管理最为困难的解决方案的取舍,系统负载的调控.失控的后 ...