shell编程基础(shell脚本学习笔记)

文章目录

    • shell编程基础(shell脚本学习笔记)
  • 判断
    • 1. if判断结构
    • 2. if/else判断结构
    • 3. if/elif/else判断结构
    • 4. case判断结构

判断


有了测试,就要有获得测试结果的机制,并根据测试结果运行不同的代码段,这样程序就可以从简单的命令罗列变得更“智能”一些,从而实现程序的流程控制。在Shell中,流程控制分为两大类,一类是“循环”,一类是“判断选择”。

1. if判断结构

​ if是最简单的判断语句,可以针对测试结果做相应处理:如果测试为真则运行相关代码,其语法结构如下:

if expression; thencommand
fi
if expression; thencommand1command2...
fi

2. if/else判断结构

​ 上一小节中的if结构非常简单,它只会在if判断为真的情况下执行then后面的内容,所以该语句只能做 “单向选择” 。虽然可以通过顺序使用多条if语句,以满足多种条件的判断,但是看起来还是比较烦琐。而if/else语句则可以完成两个分支的选择:如果if后的判断成立,则执行then后面的内容;否则执行else后面的内容。其语法结构如下:

if expression; thencommand
elsecommand
fi

3. if/elif/else判断结构

​ 不论是if结构的单向选择,还是if/else结构的双向选择,实际上都不能满足需要,现实中的判断往往有多种可能,在这种情况下可以通过if/else的语法嵌套完成多向选择。其结构如下所示:

if expression1; thencommand1
elseif  expression2; thencommand2elsecommand3fi
fi

使用这种嵌套的方式可以增加更多的选择分支,虽然从语法上来说毫无错误,但使用这种方式进入多层嵌套后,代码的可读性会变得越来越差。这时可以使用if/elif/else结构。其语法结构如下:

if expression1; thencommand1
elif expression2; thenCommand2
elif expression3; thenCommand3
...
fi

4. case判断结构

​ 和if/elif/else判断结构一样,case判断结构也可以用于多种可能情况下的分支选择。其语法结构如下:

case VAR in
var1) command1 ;;
var2) command2 ;;
var3) command3 ;;
...
*) command ;;
esac

​ 其原理为从上到下依次比较VAR和var1、var2、var3的值是否相等,如果匹配相等则执行后面的命令语句,在无一匹配的情况下匹配最后的默认*,并执行后面的默认命令。要注意的是,case判断结构中的var1、var2、var3等这些值只能是常量或正则表达式。

下面的脚本可以用于检测用户的输入中是否含有大写字母、小写字母或者数字,这里case匹配的值是正则表达式。

[root@localhost ~]# cat detect_input.sh
#!/bin/bash
read-p "Give me a word: " input
echo-en "You gave me some "
case $input in*[[:lower:]]*) echo-en "Lowercase " ;;*[[:upper:]]*) echo-en "Uppercase " ;;*[[:digit:]]*) echo-en "Numerical " ;;*) echo "unknown input." ;;
esac

shell脚本--判断相关推荐

  1. linux怎么判断网络是否正常运行,Linux shell脚本判断服务器网络是否可以上网

    微信公众号:「小林coding」 用简洁的方式,分享编程小知识. Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需 ...

  2. linux判断没有文件夹建一个,2,shell 脚本, 判断一个文件是否存在, 不存在就创建, 存在就显示其路径...

    2,shell 脚本, 判断一个文件是否存在, 不存在就创建, 存在就显示其路径 关于 shell 脚本: 1, 用 Shell 编程, 判断一文件是不是存在, 如果存在将其拷贝到 /dev 目录下. ...

  3. Shell脚本-判断文件有无进而复制

    [原]Shell脚本-判断文件有无进而复制 2016年7月5日某同学在群上求助要编一个判断文件或目录在某路径下有无进而有的就复制粘贴到另一路径下,无的则将代码中断(不往下执行命令)的脚本.逐一完善.模 ...

  4. Linux shell脚本判断服务器网络是否可以上网

    在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态. 我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态 ...

  5. Shell脚本判断IP是否合法性(多种方法)

    运维角度来说,写shell脚本经常会遇到判断输入的值是否合法,比如IP.邮件地址等.那么,根据自身写脚本中总结的判断IP合法性脚本分享给网友,遇到时能有所参考. 思路:IP由四位数字组成,以点分割,每 ...

  6. linux shell脚本判断文件行数,判断文件是否存在的shell脚本代码

    实现代码一. #!/bin/sh # 判断文件是否存在 # lilSzqFnk:www.jb51.net # date:2013/2/28 myPath="/var/log/httpd/&q ...

  7. shell脚本判断上一个命令是否执行成功

    shell脚本中判断上一个命令是否执行成功 shell中使用符号"$?"来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败. 结合if-else语句实现判断上一个命 ...

  8. 利用shell脚本判断一个网段的主机是否处于存活状态

    脚本内容 #!/bin/bash#需求:写一个脚本判断一个192.168.1.0/24网段中,哪些主机处于存活状态,哪些处于关闭状态#1.通过ping命令可以判断主机是否处于存活状态 #2.ping ...

  9. linux shell脚本判断文件或文件夹是否存在循环操作

    我最近写的脚本 你改改就能用 3.sh中全是 /data/test 这样的指向目录的数据 #!/bin/bash #set -x#循环读取文件目录 for line in `cat /root/shi ...

最新文章

  1. Html5 aside标签的用法和作用
  2. PowerShell2.0之维护网络(三)设置网络适配器
  3. Apache日志配置参数说明
  4. JavaScript使用ACTIVEX控件引起崩溃问题的解决
  5. python2 float类型_Python学习笔记2:基本数据类型
  6. 【PAT乙级】1035 插入与归并 (25 分)
  7. php 验证微信token_php之微信公众号验证token获取access_token
  8. 十年后 AI 是什么样?
  9. 工作中常用到的 Spring 依赖管理技术盘点
  10. 在MySQL中使用游标和for循环
  11. php 投票 排序,关于phpcms v9投票模块选项排序问题修改_PHP教程
  12. winform mysql 客户端_Winform+Mysql登录
  13. 信号与系统(一) 能量信号和功率信号
  14. MySQL优化步骤和my.cnf优化配置
  15. 15个非常有用的Adobe Flex教程
  16. 解决 fatal: unable to access xxx: Encountered end of
  17. 在MATLAB绘制三角形区域上的二元函数图像
  18. std::numeric_limits的使用
  19. dfuse 现在正式面向商业部署
  20. Python:练习打字游戏

热门文章

  1. 初学java之关于文件路径的表示方法
  2. Airtest入门及多设备管理总结
  3. 听说你情人节没人陪,这不我来给你介绍对象啦
  4. Spring Security 认证授权详解
  5. 一个人的心,最不会说谎
  6. 持续集成:Jenkins pipeline全局变量
  7. previousSibling和nextSibling用法
  8. 解决图片底部的空白缝隙
  9. JAVA宠物管理系统,对面向对象继续梳理(附文档下载地址)
  10. 特斯拉神器TeslaMate一键安装,来了