返回顶部
首页 > 资讯 > 操作系统 >Shell编程条件测试的实现
  • 690
分享到

Shell编程条件测试的实现

Shell条件测试 2022-06-04 23:06:46 690人浏览 安东尼
摘要

目录什么是shell编写Shell脚本条件测试 | 数值测试条件测试 | 字符串测试条件测试 | 文件状态测试条件测试的逻辑操作符什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令。除此

目录
  • 什么是shell
  • 编写Shell脚本
  • 条件测试 | 数值测试
  • 条件测试 | 字符串测试
  • 条件测试 | 文件状态测试
  • 条件测试的逻辑操作符

什么是Shell

Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令。除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行linux系统提供的其他程序一样执行这个文件,这个命令文件就叫做Shell程序或者Shell脚本。当运行这个文件时,它会像在命令行输入这些命令一样顺序地执行它们。

Shell脚本支持变量、命令行参数、交互式输入、函数模块、各种控制语句等高级编程语言的特性,如if、case、while和for等。利用Shell程序设计语言可以编写出功能非常复杂的脚本程序,把大量的任务自动化,尤其是那些需要输入大量命令而在执行过程中不太需要与用户进行干预的系统管理任务。

为了让Shell能读取并且执行Shell程序,Shell脚本的文件权限必须被设置为可读和可执行。为了让Shell可以找到程序,可以选择输入完全路径名,或者将这个脚本的路径放在PATH环境变量指定的路径列表中。Shell脚本不是复杂的程序,它是由上往下逐行解释执行的。脚本的第一行总是以“#!<Shell解释器文件路径>”开始,用来指定该脚本是使用那种Shell进行解释执行。

编写Shell脚本

1)使用VI或者其他任意的文本编辑工具创建一个名为HelloWorld.sh的文件,并在其中加入以下内容:


[root@localhost ~]# vi HelloWorld.sh
#!/bin/bash
#The first Shell script
echo "Hello World!"

2)为HelloWorld.sh文件添加执行权限;


[root@localhost ~]# chmod +x HelloWorld.sh

3)运行HelloWorld.sh脚本,查看运行结果;


[root@localhost ~]# ./HelloWorld.sh

Hello World!

条件测试 | 数值测试

编写Shell脚本时,有时要先测试字符串是否一致、数字是否相等或者检查文件状态,基于这些测试的结果再做下一步的操作。Shell脚本的条件测试可以用于测试字符串、文件状态和数字。

测试完成后可以通过“$?”获取测试的结果,其中0为正确,1为错误。

数值测试用于对两个数值进行比较并得出判断结果,包括:等于、不等于、大于、大于等于、小于、小于等于。

数值判断的格式:[ 数值1 关系运算符 数值2 ]

方括号与条件之间必须要有空格。

数值测试的关系运算符
关系运算符 说明
-eq 两个数值相等
-ne 两个数值不相等
-gt 第一个数大于第二个数
-lt 第一个数小于第二个数
-ge 第一个数大于等于第二个数
-le 第一个数小于等于第二个数

测试两个数值是否相等;


[root@localhost ~]# [ 1024 -eq 1024 ]           //测试1024是否等于1024
[root@localhost ~]# echo $?
0                                               //两个数值相等
修改第一个数值为1124后再次进行测试。
[root@localhost ~]# [ 1124 -eq 1024 ]
[root@localhost ~]# echo $?
1                                               //两个数值不相等
[root@localhost ~]# number1=500                 //number1为500
[root@localhost ~]# number2=254                 //number2为254
[root@localhost ~]# [ $number1 -gt $number2 ]
[root@localhost ~]# echo $?
0                                               //number1大于number2
[root@localhost ~]#

条件测试 | 字符串测试

字符串测试可以对两个字符串的值进行比较,也可以测试单个字符串的值是否为空或者非空。

字符串测试的格式:[ 关系运算符 字符串 ]或者[ 字符串1 关系运算符 字符串2 ]

字符串测试的关系运算符
关系运算符 说明
= 两个字符串相等
!= 两个字符串不相等
-z 字符串为空
-n

字符串不为空


要测试两个字符串是否相等
[root@localhost ~]# [ "abc" = "abc" ]
[root@localhost ~]# echo $?
0                                        //两个字符串相等
把第一个字符串更改为bac后进行测试
[root@localhost ~]# [ "bac" = "abc" ]
[root@localhost ~]# echo $?
1                                        //两个字符串不相等
如果把运算符改为“!=”
[root@localhost ~]# [ "bac" != "abc" ]
[root@localhost ~]# echo $?
0
判断环境变量是否为空或者非空
[root@localhost ~]# [ -z $python1 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -n $Python1 ]
[root@localhost ~]# echo $?
0                                        //python1变量为空
[root@localhost ~]# python1="test"       //对python1变量进行赋值
[root@localhost ~]# [ -z $python1 ]
[root@localhost ~]# echo $?
1                                        //python1变量不为空
[root@localhost ~]#

条件测试 | 文件状态测试

Linux的Shell脚本支持对文件状态的检测,包括检测文件的类型、文件的权限和文件的长度等;

文件状态测试的格式:[ 关系运算符 字符串 ]

文件状态测试的关系运算符
关系运算符 说明
-d 目录
-f 一般文件
-L 链接文件
-r

可读

-w 可写
-x 可执行
-u 设置了suid
-s 文件长度大于0、非空


[root@localhost 20190105]# ll
总用量 4
-rwxr-xr-x. 1 root root 56 6月   4 07:55 HelloWorld.sh
[root@localhost 20190105]# [ -r HelloWorld.sh ]
[root@localhost 20190105]# echo $?
0                                                         //HelloWorld.sh 文件可读
[root@localhost 20190105]# [ -w HelloWorld.sh ]
[root@localhost 20190105]# echo $?
0                                                         //HelloWorld.sh 文件可写
[root@localhost 20190105]# [ -x HelloWorld.sh ]
[root@localhost 20190105]# echo $?
0                                                         //HelloWorld.sh 文件可执行
[root@localhost 20190105]#

条件测试的逻辑操作符

逻辑操作符分以下3种:

  • -a:逻辑与,只有当操作符两边的条件均为真时,结果为真,否则为假。
  • -o:逻辑或,操作符两边的条件只要有一个为真,结果为真,只有当两边所有条件为假时,结果为假。
  • !:逻辑否,条件为假,结果为真。

如果要测试两个文件的状态
[root@localhost 20190105]# ll test1 test2
-rw-rw-r--. 1 root root 0 6月   4 09:25 test1
-rw-rw-r--. 1 root root 0 6月   4 09:25 test2
[root@localhost 20190105]# [ -r test1 -a -r test2 ] //测试文件 test1 和 test2 是否都可读
[root@localhost 20190105]# echo $?
0
[root@localhost 20190105]# [ -x test1 -o -x test2 ] //测试文件 test1 和 test2 是否至少有一个可执行
[root@localhost 20190105]# echo $?
1
如果要测试两个数值变量
[root@localhost 20190105]# number1=10
[root@localhost 20190105]# number2=20
[root@localhost 20190105]# [ $number1 -eq 10 -a $number2 -gt 20 ] //测试是否number1 大于10 且 number2 大于20
[root@localhost 20190105]# echo $?
1
如果要测试文件test1 是否为不可读
[root@localhost 20190105]# ls -l test1
-rw-rw-r--. 1 root root 0 6月   4 09:25 test1
[root@localhost 20190105]# [ ! -r test1 ] //测试文件test1 是否为不可读
[root@localhost 20190105]# echo $?
1
[root@localhost 20190105]#

到此这篇关于Shell编程条件测试的实现的文章就介绍到这了,更多相关Shell 条件测试 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: Shell编程条件测试的实现

本文链接: https://lsjlt.com/news/21400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Shell编程条件测试的实现
    目录什么是Shell编写Shell脚本条件测试 | 数值测试条件测试 | 字符串测试条件测试 | 文件状态测试条件测试的逻辑操作符什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令。除此...
    99+
    2022-06-04
    Shell条件测试
  • Shell脚本的条件测试和if条件语句使用方法
    一、条件测试操作 要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值(¥?)来判断是否执行成功,当返回值为0时表示成功,否则(非...
    99+
    2022-06-04
    Shell 条件测试 Shell if条件语句
  • 如何进行Shell脚本的条件测试和if条件语句使用
    如何进行Shell脚本的条件测试和if条件语句使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、条件测试操作test命令是专门用来测试的工具,能够对特定条件进行测试,然...
    99+
    2023-06-28
  • 如何在Shell脚本中使用条件测试和if条件语句
    今天就跟大家聊聊有关如何在Shell脚本中使用条件测试和if条件语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、条件测试操作要使Shell脚本程序具备一定的“智能”,面临的第一...
    99+
    2023-06-09
  • Java和Shell编程算法:如何实现HTTP请求的自动化测试?
    随着互联网的快速发展,HTTP协议已经成为了互联网上最常用的协议之一。在Web应用程序的开发过程中,HTTP请求是必不可少的一部分。而在Web应用程序的测试过程中,自动化测试已经成为了一种越来越流行的趋势。本文将介绍如何使用Java和Sh...
    99+
    2023-06-03
    shell 编程算法 http
  • 软件测试-接口测试-代码实现接口测试
    文章目录 1.request 1.1 request介绍 1.2 发送get请求 1.3 发送set请求 1.4 其...
    99+
    2023-09-06
    php json
  • 软件测试之使用Fiddler实现弱网测试
    一、弱网简介 弱网看字面意思就是网络比较弱,我们通称为信号差,网速慢。 1、弱网的影响 在地铁、隧道、电梯和车库等场景下使用APP ,网络会出现延时、中断和超时等情况。 如...
    99+
    2024-04-02
  • 软件测试实现Finddler的手机抓包过程
    目录Fiddler的手机抓包过程1、启动Fiddler2、在Fiddler Options”对话框3、在本机命令行输入:ipconfig4、打开android设备的“设置”5、在“代...
    99+
    2024-04-02
  • Android编程之蓝牙测试实例
    本文实例讲述了Android编程之蓝牙测试。分享给大家供大家参考。具体分析如下: 一、软件平台: win7 + eclipse + sdk 二、设计思路: 配合倒计时定时器实现...
    99+
    2022-06-06
    程之 测试 Android 蓝牙
  • 如何实现ADO测试程序
    这篇文章将为大家详细讲解有关如何实现ADO测试程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。原来在Sql Server及Oracle上操作时,执行完成后直接把连接关闭了。返回的参数想怎么处理就怎么处理...
    99+
    2023-06-17
  • 软件测试项目实战之功能测试 千锋实战教程
    软件测试项目实战之功能测试 千锋实战教程随着数字化技术越来越普及,互联网行业对软件测试的要求也在持续迭代。预计,2023年,全球相应的软件测试市场,预计将出现14%的综合年度增长率。可见,无论你是否在这个行业,由软件技术开发出的各种应用正在...
    99+
    2023-06-04
  • Java中怎么实现条件编译
    本篇文章给大家分享的是有关 Java中怎么实现条件编译,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。条件编译绝对是一个好东西。如在C或CPP中,可以通过预处理语句来实现条件编译...
    99+
    2023-06-17
  • Android编程之页面切换测试实例
    本文实例讲述了Android编程之页面切换测试。分享给大家供大家参考。具体分析如下: 一、软件平台: win7 + eclipse + sdk 二、设计思路: 两个页面:mia...
    99+
    2022-06-06
    程之 测试 Android
  • Android编程之单元测试实例分析
    本文实例讲述了Android编程之单元测试用法。分享给大家供大家参考,具体如下: 在实际开发中,开发android软件的过程需要不断地进行测试。使用Junint测试框架,是正规...
    99+
    2022-06-06
    程之 单元 单元测试 测试 Android
  • shell脚本实现实时检测文件变更
    使用python做web开发,现在流行使用uwsgi调用python程序,但是使用uwsgi一段时间发现有一个弊端,就是每次更改源代码后必须重启uwsgi才能生效,包括更改模板文件也是,我是个懒人,再经过一...
    99+
    2022-06-04
    脚本 实时 文件
  • Linux shell脚本编程if语句的使用方法(条件判断)
    if 语句格式if 条件then Commandelse Commandfi 别忘了这个结尾If语句忘了结尾fitest.sh: line 14: syntax error: unexpec...
    99+
    2022-06-04
    使用方法 语句 脚本
  • Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制
    目录 一、Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行         二、Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变量 5. 预定义变量 三...
    99+
    2023-09-01
    linux 服务器 运维 运维开发 Shell
  • linux shell实现进度条的方法
    这篇文章主要讲解了“linux shell实现进度条的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux shell实现进度条的方法”吧!直接看代码吧,很简单代码如下:#!/bin...
    99+
    2023-06-09
  • VB.NET如何实现条形码编程
    这篇文章给大家分享的是有关VB.NET如何实现条形码编程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。条形码技术广泛应用于各行各业,你随便拿起一本书、一包薯片都可以在外包装上找到,利用条码读取机便可将这一条条黑白...
    99+
    2023-06-17
  • Java项目中实现多线程并发编程的条件有哪些
    这期内容当中小编将会给大家带来有关Java项目中实现多线程并发编程的条件有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、原子性原子,一个不可再被分割的颗粒。原子性,指的是一个或多个不能再被分割的操...
    99+
    2023-05-31
    java 并发编程 多线程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作