博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本工具之条件测试
阅读量:6880 次
发布时间:2019-06-27

本文共 2970 字,大约阅读时间需要 9 分钟。

测试文件属性:

-b file           --是否为块设备

-c file           --是否为字符设备

-r file           --文件是否只读

-w file           --文件是否可写

-x file           --文件是否可执行

-s file           --文件长度大于0为真

-d file           --文件是否为一个目录

-f file           --是否为普通文件

-e file           --文件是否存在

[root@tong1 ~]# cat 1.sh

#!/bin/bash
echo "---------------------"
read -p '请输入一个目录:' ab
if [ -d $ab ];then
    echo "此文件是一个目录:$ab"
elif [ -f $ab ];then
    echo "此文件是一个文件:$ab"
else
   echo "不是文件也不是目录,请重新输入"
fi
echo "----------------------"

[root@tong1 ~]# ./1.sh

---------------------
请输入一个目录:qw
不是文件也不是目录,请重新输入
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入一个目录:install.log
此文件是一个文件:install.log
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入一个目录:innotop-1.9.0
此文件是一个目录:innotop-1.9.0
----------------------
[root@tong1 ~]#

测试数值:

n1 -eq n2              --n1等于n2

n1 -ne n2              --n1不等于n2

n1 -gt n2              --n1大于n2

n1 -lt n2              --n1小于n2

n1 -ge n2              --n1大于等于n2

n1 -le n2              --n1小于等于n2

[root@tong1 ~]# cat 1.sh

#!/bin/bash
echo "---------------------"
read -p '输入两个数比较大小:' a b
if [ $a -gt $b ];then
    echo "第一个数:$a大于第二个数:$b"
elif [ $a -lt $b ];then
    echo "第二个数:$b大于第一个数:$a"
elif [ $a -ne $b ];then
    echo "两个数相等$a,$b"
else
   echo "输入的数有问题"
fi
echo "----------------------"

[root@tong1 ~]# ./1.sh

---------------------
输入两个数比较大小:12 23
第二个数大于第一个数
----------------------
[root@tong1 ~]# vim 1.sh
[root@tong1 ~]# ./1.sh
---------------------
输入两个数比较大小:12 23
第二个数:23大于第一个数:12
----------------------
[root@tong1 ~]# ./1.sh
---------------------
输入两个数比较大小:23 12
第一个数:23大于第二个数:12
----------------------
[root@tong1 ~]# ./1.sh
---------------------
输入两个数比较大小:12 12
输入的数有问题
----------------------
[root@tong1 ~]# ./1.sh
---------------------
输入两个数比较大小:dwf w
./1.sh: line 4: [: dwf: integer expression expected
./1.sh: line 6: [: dwf: integer expression expected
./1.sh: line 8: [: dwf: integer expression expected
输入的数有问题
----------------------
[root@tong1 ~]#

测试字符串:

-z s1            --字符串为空

-n s1            --字符串不为空

s1=s2            --字符串相等

s1!=s2           --字符串不相等

s1               --是否为空串

[root@tong1 ~]# cat 1.sh

#!/bin/bash
echo "---------------------"
read -p '请输入两个字符串:' a b
if [ -z $a ] || [ -z $b ] ;then
    echo "字符串不能为空"
elif [ $a = $b ];then
    echo "字符串相等"
else
   echo "不是字符串,请重新输入"
fi
echo "----------------------"

[root@tong1 ~]# ./1.sh

---------------------
请输入两个字符串:a s
不是字符串,请重新输入
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入两个字符串:a a
字符串相等
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入两个字符串:2 f
不是字符串,请重新输入
----------------------
[root@tong1 ~]#

测试逻辑算符:

-a          --与

-o          --或

!           --非

[root@tong1 ~]# cat 1.sh

#!/bin/bash
echo "---------------------"
read -p '请输入两个字符串:' a b
if [ -z $a  -a  -z $b ] ;then
    echo "字符串不能为空"
elif [ $a = $b  -o  $a = $b ];then
    echo "字符串相等或不相等"
else
   echo "不是字符串,请重新输入"
fi
echo "----------------------"

[root@tong1 ~]# ./1.sh

---------------------
请输入两个字符串:a s
不是字符串,请重新输入
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入两个字符串:a a
字符串相等或不相等
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入两个字符串:2 f
不是字符串,请重新输入
----------------------
[root@tong1 ~]#

转载地址:http://hqubl.baihongyu.com/

你可能感兴趣的文章
根据调试工具看Vue源码之生命周期(一)
查看>>
RxJS教程
查看>>
在高并发环境下Reids做缓存踩坑记录
查看>>
通俗易懂--岭回归(L2)、lasso回归(L1)、ElasticNet讲解(算法+案例)
查看>>
Word类报表实例 - 质量检测报告
查看>>
Java进阶篇设计模式之二 ----- 工厂模式
查看>>
2018以太坊编程语言solidity最佳IDE
查看>>
hey,你的CommonJS规范
查看>>
定位?
查看>>
《工具癖》从Github下载开源电子书
查看>>
让Vue的v-for支持迭代器遍历
查看>>
微服务架构基础之API网关
查看>>
下载速度
查看>>
传统电视or互联网电视,智能电视领域谁才是虎狼之师
查看>>
Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步
查看>>
进程线程
查看>>
生活感言
查看>>
什么是PDM系统?
查看>>
pptp 配置文件简析
查看>>
自己对DNS的理解
查看>>