您的位置:首页 > 教程 > linux > Shell编程条件测试的实现

Shell编程条件测试的实现

2022-06-19 21:49:27 来源:易采站长站 作者:

Shell编程条件测试的实现

目录什么是Shell编写Shell脚本条件测试|数值测试条件测试|字符串测试条件测试|文件状态测试条件测试的逻辑操作符什么是ShellShell是一个命令解释器,它会解释并执行命令行提示符...d3X站长之家-易采站长站-Easck.Com

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

d3X站长之家-易采站长站-Easck.Com

什么是Shell

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

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

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

d3X站长之家-易采站长站-Easck.Com

编写Shell脚本

1)使用VI或者其他任意的文本编辑工具创建一个名为HelloWorld.sh的文件,并在其中加入以下内容:d3X站长之家-易采站长站-Easck.Com

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

2)为HelloWorld.sh文件添加执行权限;d3X站长之家-易采站长站-Easck.Com

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

3)运行HelloWorld.sh脚本,查看运行结果;d3X站长之家-易采站长站-Easck.Com

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

Hello World!

d3X站长之家-易采站长站-Easck.Com

条件测试 | 数值测试

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

测试完成后可以通过“$?”获取测试的结果,其中0为正确,1为错误。d3X站长之家-易采站长站-Easck.Com

数值测试用于对两个数值进行比较并得出判断结果,包括:等于、不等于、大于、大于等于、小于、小于等于。d3X站长之家-易采站长站-Easck.Com

数值判断的格式:[ 数值1 关系运算符 数值2 ]d3X站长之家-易采站长站-Easck.Com

方括号与条件之间必须要有空格。d3X站长之家-易采站长站-Easck.Com

数值测试的关系运算符 关系运算符 说明 -eq 两个数值相等 www.cppcns.com -ne 两个数值不相等 -gt 第一个数大于第二个数 -lt 第一个数小于第二个数 -ge 第一个数大于等于第二个数 -le 第一个数小于等于第二个数 d3X站长之家-易采站长站-Easck.Com

测试两个数值是否相等;d3X站长之家-易采站长站-Easck.Com

[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 ~]#

d3X站长之家-易采站长站-Easck.Com

条件测试 | 字符串测试

字符串测试可以对两个字符串的值进行比较,也可以测试单个字符串的值是否为空或者非空。d3X站长之家-易采站长站-Easck.Com

字符串测试的格式:[ 关系运算符 字符串 ]或者[ 字符串1 关系运算符 字符串2 ]d3X站长之家-易采站长站-Easck.Com

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

字符串不为空d3X站长之家-易采站长站-Easck.Com

d3X站长之家-易采站长站-Easck.Com

要测试两个字符串是否相等
[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 ~]#

d3X站长之家-易采站长站-Easck.Com

条件测试 | 文件状态测试

Linux的Shell脚本支持对文件状态的检测,包括检测文件的类型、文件的权限和文件的长度等;d3X站长之家-易采站长站-Easck.Com

文件状态测试的格式:[ 关系运算符 字符串 ]d3X站长之家-易采站长站-Easck.Com

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

可读d3X站长之家-易采站长站-Easck.Com

-w 可写 -x 可执行 -u 设置了suid -s 文件长度大于0、非空 d3X站长之家-易采站长站-Easck.Com

[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]#

d3X站长之家-易采站长站-Easck.Com

条件测试的逻辑操作符

逻辑操作符分以下3种:d3X站长之家-易采站长站-Easck.Com

-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 条件测试 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!d3X站长之家-易采站长站-Easck.Com

d3X站长之家-易采站长站-Easck.Com

如有侵权,请联系QQ:279390809 电话:15144810328

相关文章

  • Linux下用GHOST来做系统备份

    Linux下用GHOST来做系统备份

    在Windows系统下备份我们可以用GHOST工具软件完成,Linux系统不能完全依赖于GHOST工具,一则是GHOST本身是有版权的软件,二是GHOST只支持ext2、ext3文件系统的Linux分区,不支持reiserfs、xfs等
    2019-10-25
  • 给 FreeBSD 12.1 安装 GNOME3 图形界面

    给 FreeBSD 12.1 安装 GNOME3 图形界面

    FreeBSD是一个完全开放的、安全的系统,可以Do it yourself的系统。但是个人还是不喜欢呆板的命令行界面,所有就给 FreeBSD 12.1 安装 GNOME3 图形界面。 开始操作,启动FreeBSD 12.1,以root身份
    2019-10-27
  • Ubuntu Studio一个不错的操作系统

    Ubuntu Studio一个不错的操作系统

    Ubuntu Studio 是一个基于 Ubuntu 而面向音频、视频及图形爱好者的操作系统。本次推出的 Ubuntu Studio 为 7.04 版,目前仅支持 Intel i386 兼容的处理器。 Ubuntu Studio 从大量的开源多媒体创作程序
    2019-10-25
  • 最受欢迎的10款Linux免费游戏

    最受欢迎的10款Linux免费游戏

    图为在Linux下运行的免费游戏America's Army 如果你认为 Linux下没有什么好游戏的话,那就错了!我们来看看Linux下最受欢迎的10款游戏吧,而且这些游戏都是完全免费的! # skyreal update(06-12
    2019-10-25
  • compiz fusion特效使用心得(附3D桌面图)

    compiz fusion特效使用心得(附3D桌面图)

    3D桌面图 LINUX发行版就是好,当大多数人还在沉迷于那些什么风格图标鸟玻璃效果甚至孜孜不倦津津乐道的时候,Linux的高手们已经悄悄为我们开启了一个桌面系统3D的时代。 当我第一次
    2019-10-25
  • Ubuntu 下aMule 的安装配置

    Ubuntu 下aMule 的安装配置

    aMule 是一个类似于 eMule 的多平台 P2P 客户端程序。以下将简略叙述 aMule 在 Ubuntu 中的安装及配置 [High ID] 与 [KAD] 的过程。 安装: sudo apt-get install amule sudo apt-get install amule-utils 如果需要
    2019-10-25
  • JMeter jp@gc - stepping thread group插件

    JMeter jp@gc - stepping thread group插件

    这是一个出单接口压力测试的小例子,了解一下压力测试最最基础的基础。出单接口是用来保险出单的,不需要在UI界面下一步下一步的出单,接口一调数据入库完事~~~。再啰嗦一句接
    2019-10-27
  • Ubuntu 下使用K3B软件刻录光盘(图)

    Ubuntu 下使用K3B软件刻录光盘(图)

    不知大家会不会在Ubuntu下刻录光盘呢?k3b是KDE环境下的一个CD/DVD刻录软件,有非常容易使用的界面,功能比较齐全。用起来感觉就象是win下的Nero一样简单自然,比ubuntu里原来的刻录CD方式
    2019-10-25