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控制流结构的更多相关文章

  1. shell控制流结构笔记

      man  test 可以看见这些     比较符号:-lt小于 -le小于等于   -gt大于   -ge大于等于  -ne不等于   -eq等于              < 小于(需要双 ...

  2. shell中的控制流结构

    shell中的控制流结构 1.if...then..else..fi语句 2.case语句 3.for循环 4.until 语句 5.while循环 6.break控制 7.continue 控制 1 ...

  3. 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构

    ------- android培训.java培训.期待与您交流! ---------- 程序控制流结构:顺序结构:判断结构:选择结构:循环结构. 判断结构:条件表达式无论写成什么样子,只看最终的结构是 ...

  4. Shell脚本、Shell脚本结构、date命令的用法、变量

    1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构:   #!/bin/bash  以#!/bin/bash开头,即以/bin/ba ...

  5. 用call/cc合成所有的控制流结构

    用call/cc合成所有的控制流结构 来源 https://www.jianshu.com/p/e860f95cad51 call/cc 是非常.非常特殊的,因为它根本无法用 Lambda 演算定义. ...

  6. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  7. shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...

  8. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

  9. For,while,case,shell循环结构

                                                                For,while,case,shell循环结构 案例1:使用for循环结构 案 ...

随机推荐

  1. OpenVPN Windows 平台安装部署教程

    一.环境准备: 操作系统Windows 服务器IP:192.168.88.123  VPN:192.168.89.1 客户端IP:192.168.78.3 客户端服务端单网卡,路由器做好端口映射 安装 ...

  2. 【转】VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别

    ☞ 本文主要介绍软件『VMware Workstation(虚拟机)』的相关内容:VMware网络连接模式—桥接.NAT以及仅主机模式的详细介绍和区别. 其下列版本/分支可以参考本文: 全部版本/分支 ...

  3. WM_COPYDATA

    1. WM_COPYDATA : https://msdn.microsoft.com/en-us/library/windows/desktop/ms649011(v=vs.85).aspx COP ...

  4. grafana 批量添加图表

    利用grafana做监控展示特别方便,而且界面还很有科技感,一般的使用都是自己手动添加图表,或者使用别人提供好的模板. 在一种情况下就比较尴尬了,我有100个实例的内存数据想展示,如果都放在一个tab ...

  5. svg操纵方案 基于 D3 还是 angular?

    之前还是想简单了, 现在重新写这篇.把逻辑拆分粒度的辨析,放到外面去. 问题提出:svg控制方案 基于 D3 还是 angular 根据这个,html 4种展现样式:普通的html,svg,2D ca ...

  6. 最大交换 Maximum Swap

    2018-07-28 16:52:20 问题描述: 问题求解: 使用bucket数组来记录每个数最后出现的位置,然后从左向右遍历一遍即可. public int maximumSwap(int num ...

  7. root登录不进去 dropbear ssh

    安装好了dropbear, root 怎么也登录不进去. 看 /var/log/messages , 发觉有很多下面的消息, 网上查了一下, 发觉建个 /etc/shells 文件,然后把 /bin/ ...

  8. Tips for Sync Vimtex and PDF

    vimtex synctex: \lv. skim synctex: to display the TeX source line corresponding to a point in the PD ...

  9. python-day47--mysql数据备份与恢复

    一.IDE工具介绍 掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 #6. 备份库/表 #注意: 批量加注释:ctrl+ ...

  10. MFC中format函数用法

    本文转载于:http://blog.csdn.net/sunxc123/article/details/7742982 在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString ...