shell中if test使用详解

 更新时间:2023年06月08日 10:00:50   作者:猎人在吃肉  
本文主要介绍了shell中if test使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、数值

1.1、数值大小比较

参数说明
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真

示例1:

#!/bin/bash
num1=100
num2=200
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

1.2、数据值运算

示例1:

#!/bin/bash
a=5
b=6
result=$[a+b] # 注意等号两边不能有空格
echo "result 为: $result"

2、字符串

2.1、示例1:字符串是否相等

参数说明
=等于则为真
!=不相等则为真
-z 字符串字符串的长度为零则为真
-n 字符串字符串的长度不为零则为真

注意:字符串比较时,变量最好使用引号,如果变量都不为空,则没有任何问题,如果变量为空,则会报错。

示例

#!/bin/bash
num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi

2.2、示例2:字符串为空

#!/bin/bash
str=""
str2="aaa"
if test -z $str
then
    echo '字符str为空!'
else
    echo '字符str值不为空'
fi
if test -z $str2
then
    echo '字符str2为空!'
else
    echo '字符str2值不为空'
fi

3、文件判断

参数说明
-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写则为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-c 文件名如果文件存在且为字符型特殊文件则为真
-b 文件名如果文件存在且为块特殊文件则为真

示例:

#!/bin/bash
fileName1="/cygdrive/c/Users/admin/Desktop/sh学习/demo1-1.sh"
if test -e $fileName1
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

4、逻辑运算

参数说明
-a与,并且
-o
!

其优先级为: ! 最高, -a 次之, -o 最低。

示例1:-a 使用

#!/bin/bash
str="aa"
str2="bb"
if test -n "$str" -a -n "$str2"
then
    echo 'str 和 str2 都有值!'
else
    echo 'str 、 str2 至少有一个为空'
fi

示例2:-a 、-o 使用

登录时,对用户名和密码进行验证:

#!/bin/bash
read -p "请输入用户名和密码:" username pwd
echo "username=$username"
echo "pwd=$pwd"
if test -z "$username" -o -z "$pwd"
then
    echo '用户名和密码均不能为空'
    exit 2
else    
    echo '用户名和密码 非空验证通过'    
fi
if test "$username" = "admin" -a "$pwd" = "123"
then
    echo '登录成功'
else
    echo '用户名或密码不正确'
    exit 2
fi

5、if elif else

1)数值

#!/bin/bash
#提示用户输入分数
read -p "请输入你的分数:" score
#进行判断
if [ "$score" -ge 90 -a "$score" -le 100 ]
then
    echo "优秀"
elif [ "$score" -ge 80 -a "$score" -lt 90 ]
then
    echo "良好"
elif [ "$score" -ge 70 -a "$score" -lt 80 ]
then
    echo "一般"
elif [ "$score" -ge 60 -a "$score" -lt 70 ]
then
    echo "及格"
else
    echo "西西睡把"
fi

2)文件

#!/bin/bash
#提示用户输入
read -p "请输入内容:" con
if [ -z "$con" ]
then
    echo "为空"
elif [ -d "$con" ]
then
    echo "是目录"
elif [ -f "$con" ]
then
    echo "是文件"
else
    echo "错误"
fi

到此这篇关于shell中if test使用详解的文章就介绍到这了,更多相关shell if test内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux iptables防火墙中的工作常用命令

    linux iptables防火墙中的工作常用命令

    linux系统的防火墙,IP信息包过滤u系统,它实际上由两个组件netfilter和iptables组成,这篇文章主要介绍了linux iptables防火墙-工作常用命令,需要的朋友可以参考下
    2022-10-10
  • shell 基本计算、逻辑运算、位运算详解

    shell 基本计算、逻辑运算、位运算详解

    Shell 提供大量的基本运算操作,在脚本中非常有用。Shell 对您提供的算术表达式求值,执行运算展开式,此时使用得出的结果替换表达式
    2012-09-09
  • 解析spark源码yarn-cluster模式任务提交

    解析spark源码yarn-cluster模式任务提交

    这篇文章主要为大家解析了spark源码中yarn-cluster模式任务提交方式,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家多多进步,早日升职加薪
    2021-09-09
  • Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享

    Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享

    这篇文章主要介绍了Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享,能够测试CPU和内存的占用状况以及HTTP端的异常,需要的朋友可以参考下
    2016-03-03
  • linux下监控网络流量的脚本

    linux下监控网络流量的脚本

    在我们的日常工作当中,监控网络要么使用iptarf,ifstat这些命令实现的,但是需要装额外的RPM包。特别是iptarf装起来麻烦
    2013-01-01
  • Shell中通配符的具体使用

    Shell中通配符的具体使用

    本文主要介绍了Shell中通配符的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • shell命令while循环中使用sleep命令代码示例

    shell命令while循环中使用sleep命令代码示例

    这篇文章主要介绍了shell命令while循环中使用sleep命令代码示例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Linux 命令expect使用详解

    Linux 命令expect使用详解

    expect是由Don Libes基于Tcl语言开发的,是一种脚本语言,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,本文给大家介绍Linux 命令expect使用详解,感兴趣的朋友一起看看吧
    2023-11-11
  • linux修改tomcat默认访问项目的具体步骤(必看篇)

    linux修改tomcat默认访问项目的具体步骤(必看篇)

    下面小编就为大家带来一篇linux修改tomcat默认访问项目的具体步骤(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • linux shell之控制台打印各种颜色字体和背景的实现方法

    linux shell之控制台打印各种颜色字体和背景的实现方法

    今天小编就为大家分享一篇关于linux shell之控制台打印各种颜色字体和背景的实现方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04

最新评论