shell脚本中也可以实现逻辑判断。

案例4:shell脚本中的逻辑判断

如果你学过C或者其他语言,相信你不会对if 陌生,在shell脚本中我们同样可以使用if逻辑判断。在shell中if判断的基本语法为:

1)不带else

if 判断语句; then

command

fi

#! /bin/bash
## author:Xiong Xuehao
## Use if in this script. read -p "Please input a number: " a
if ((a<60));then
echo "you didn't pass this test"
fi

在if1.sh中出现了 ((a<60))这样的形式,这是shell脚本中特有的格式,用一个小括号或者不用都会报错,请记住这个格式,即可。执行结果为:

2)带有else

if 判断语句 ; then

command

else

command

fi

#! /bin/bash
## author:Xiong Xuehao
## Use if in this script. read -p "Please input a number: " a
if ((a<60));then
echo "you didn't pass this test"
else
echo "you pass this test"
fi

执行结果为:

3)带有elif

if 判断语句一 ; then

command

elif 判断语句二; then

command

else

command

fi

#! /bin/bash
## author:Xiong Xuehao
## Use if in this script. read -p "Please input a number: " a
if ((a<60));then
echo "you didn't pass this test"
elif ((a>=60)) && ((a<85));then
echo "you pass this test"
else
echo "Verry Good!"
fi

这里的 && 表示“并且”的意思,当然你也可以使用 || 表示“或者”,执行结果:

以上只是简单的介绍了if语句的结构。在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]” 注意方括号里面需要有空格。但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)。

#! /bin/bash
## author:Xiong Xuehao
## Use if in this script. read -p "Please input a number: " a
if [ $a -lt 60 ];then
echo "$a lt than 60";
elif [ $a -ge 60 ] && [ $a -lt 85 ];then
echo "you pass this test"
elif [ $a -eq 100 ];then
echo "$a eq than 100. Very Good!"
elif [ $a -ne 0 ];then
echo "$a ne than 100. Your Input error!"
elif [ $a -gt 100 ];then
echo "$a gt than 100. Your Input error!"
else
echo "Your Input error!"
fi

运行结果如图:

案例5:shell脚本中判断档案属性

shell 脚本中if还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有读写执行权限等。常用的也就几个选项:

-e :判断文件或目录是否存在

-d :判断是不是目录,并是否存在

-f :判断是否是普通文件,并存在

-r :判断文档是否有读权限

-w :判断是否有写权限

-x :判断是否可执行

使用if判断时,具体格式为: if [ -e filename ] ; then

#! /bin/bash
## author:Xiong Xuehao
## File properties. read -p "Please input a file or directory: " a
###判断文件或目录是否存在
if [ -e $a ];then
echo "$a The file or directory already exists."
else
echo "$a The file or directory does not exist!"
fi ###判断文件或目录
if [ -d $a ];then
echo "$a The path is a directory and already exists."
elif [ -f $a ];then
echo "$a The path is a file and already exists."
else
echo "$a I don't know!"
fi ###判断权限
if [ -r $a ];then
echo "$a The document has read permission."
else
echo "$a The document does not have read permission!"
fi if [ -w $a ];then
echo "$a The document has write permission."
else
echo "$a The document does not have write permission!"
fi if [ -x $a ];then
echo "$a The document has execution permission."
else
echo "$a The document does not have execution permission!"
fi

执行如图:

案例6:shell脚本中用case逻辑判断

在shell 脚本中,除了用if来判断逻辑外,还有一种常用的方式,那就是case了。具体格式为:

case 变量 in

value1)

command

;;

value2)

command

;;

value3)

command

;;

*)

command

;;

esac

上面的结构中,不限制value的个数,*则代表除了上面的value外的其他值。下面笔者写一个判断输入数值是奇数或者偶数的脚本。

#! /bin/bash
## author:Xiong Xuehao
## Use case in this script. read -p "Please input a number: " n
###判断奇数或者偶数
a=$[$n % 2] case $a in
1)
echo "The remainder is $a. $n The num is odd."
;;
0)
echo "The remainder is $a. $n The num is even."
;;
esac

输入任意一个自然数,除以2得余数 $a 的值或为1或为0,执行结果为:

case脚本常用于编写系统服务的启动脚本,例如/etc/init.d/iptables中就用到了,不妨去查看一下。

shell脚本中的逻辑判断的更多相关文章

  1. Shell脚本中的逻辑判断、文件目录属性判断、if的特殊用法、case判断

    1.Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi格式2:if 条件; then 语句; else 语句; fi格式3:if …; then … ;elif …; then ...

  2. shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断

    7月12日任务 20.5 shell脚本中的逻辑判断20.6 文件目录属性判断20.7 if特殊用法20.8/20.9 case判断 20.5 shell脚本中的逻辑判断 逻辑判断在shell中随处可 ...

  3. Linux centosVMware shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断

    一.shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 格式2:if 条件; then 语句; else 语句; fi 格式3:if …; then … ;elif …; th ...

  4. shell脚本中的逻辑判断 文件目录属性判断 if特殊用法 case判断

    case判断 • 格式 case  变量名 in                       value1)                           command            ...

  5. shell脚本中常见的一些特殊符号和作用详解

    这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下   在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...

  6. shell脚本中的整数测试

    shell脚本中的整数测试 author:headsen chen      2017-10-17   13:58:12 个人原创,转载请注明作者,出处,否则依法追究法律责任 1,test用法:tes ...

  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. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  10. shell脚本中的反引号使用 `

    反引号是~的英文切换 在shell脚本中,反引号允许将shell命令的输出赋值给变量. test=`date` 这样shell会执行反引号中的命令.并将执行的结果赋值给变量tests.

随机推荐

  1. 0.3 preface

    Preface 此书的目的是双重的: 1. 介绍多个领域的背景材料,让学生更好地理解和学习: 2. 详细讲解量子计算和量子信息领域的重要结论,既可以作为学生通识教育的一部分,又可以作为独立研究的前奏. ...

  2. openEuler搭建k8s(1.28.2版本)

    目录 k8s搭建(1.28.2版本) 1. 安装containerd 1.1 下载tar包 1.2 编写服务单元文件 2. 安装runc 3. 安装cni插件 3.1 下载文件 3.2 设置crict ...

  3. [昌哥IT课堂]|如何确定 MySQL 服务器是否为 LTS 版本(译)

    根据支持 LTS(长期支持)发布的新发布模型,给定的 MySQL 服务器将分为以下两类: 要么是 LTS 版本. 要么是创新版本. 本博客文章将解释如何确定给定的 MySQL 服务器是否为 LTS 版 ...

  4. 什么是静态(static)?什么是静态方法,静态变量,静态块和静态类?

    本文由 ImportNew - 唐小娟 翻译自 Journaldev.如需转载本文,请先参见文章末尾处的转载要求. static是Java中的一个关键字,我们不能声明普通外层类或者包为静态的.stat ...

  5. 可爱的 Python: 创建声明性迷你语言

    编程为断言而不是指令 Python 的面向对象和透明自省功能使您可以轻松地创建用于编程任务的声明性迷你语言.在本专栏文章中,David 并未仔细研究如何使用 Python 来解释或翻译其它的专门语言( ...

  6. Mongodb4.4安装与使用

    MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能 最丰富,最像关系数 ...

  7. Asp.net MVC中的Http管道事件为什么要以Application_开头?

    今天遇到一个问题,需要在API请求结束时,释放数据库链接,避免连接池被爆掉. 按照以往的经验,需要实现IHttpModule,具体不展开了. 但是实现了IHttpModule后,还得去web.conf ...

  8. vite 分包打包

    1.概述 在使用vite打包的时候,一般情况会将依赖包和源码打包到一起,这样的问题是,一般情况依赖包一般情况是不变的,如果打包到一起,程序更新时,就会因为打包指纹发生变化而重新下载,如果进行分包,如果 ...

  9. Vue开启Gzip

    Vue配置 1.安装  npm install --save-dev compression-webpack-plugin@5.0.0 const CompressionWebpackPlugin = ...

  10. .NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门

    .NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门 原文地址:https://devblogs.microsoft.com/dotnet/introducing-aspn ...