shell中test命令的用法详解

您所在的位置:网站首页 shell中readini函数的作用 shell中test命令的用法详解

shell中test命令的用法详解

2024-03-27 02:40| 来源: 网络整理| 查看: 265

1. test命令

test 是 Shell 内置命令,用来检测某个条件是否成立。test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test。 test 命令有很多选项,可以进行数值、字符串和文件三个方面的检测。

Shell test 命令的用法为: test expression 当 test 判断 expression 成立时,退出状态为 0,否则为非 0 值

test 命令也可以简写为[],它的用法为:[ expression ] eg: 注意[]和expression之间的空格,这两个空格是必须的,否则会导致语法错误。[]的写法更加简洁,比 test 使用频率高

#!/bin/bash read age if test $age -le 2; then echo "婴儿" elif test $age -ge 3 && test $age -le 8; then echo "幼儿" elif [ $age -ge 9 ] && [ $age -le 17 ]; then echo "少年" elif [ $age -ge 18 ] && [ $age -le 25 ]; then echo "成年" elif test $age -ge 26 && test $age -le 40; then echo "青年" elif test $age -ge 41 && [ $age -le 60 ]; then echo "中年" else echo "老年" fi

#其中,-le选项表示小于等于,-ge选项表示大于等于,&&是逻辑与运算符

2. 与文件检测相关的 test 选项

文件类型判断

-b filename判断文件是否存在,并且是否为块设备文件-c filename判断文件是否存在,并且是否为字符设备文件-d filename判断文件是否存在,并且是否为目录文件-e filename判断文件是否存在-f filename判断文件是否存在,井且是否为普通文件-L filename判断文件是否存在,并且是否为符号链接文件-p filename判断文件是否存在,并且是否为管道文件-s filename判断文件是否存在,并且是否为非空-S filename判断该文件是否存在,并且是否为套接字文件

文件权限判断

-r filename判断文件是否存在,并且是否拥有读权限-w filename判断文件是否存在,并且是否拥有写权限。-x filename判断文件是否存在,并且是否拥有执行权限-u filename判断文件是否存在,并且是否拥有 SUID 权限。-g filename判断文件是否存在,并且是否拥有 SGID 权限。-k filename判断该文件是否存在,并且是否拥有 SBIT 权限

文件比较

filename1 -nt filename2判断 filename1 的修改时间是否比 filename2 的新filename -ot filename2判断 filename1 的修改时间是否比 filename2 的旧filename1 -ef filename2判断 filename1 是否和 filename2 的 inode 号一致,可以理解为两个文件是否为同一个文件。这个判断用于判断硬链接是很好的方法

Shell 中test 文件检测举例

test.sh

#!/bin/bash read filename read url if test -w $filename && test -n $url then echo $url > $filename echo "写入成功" else echo "写入失败" fi

测试结果:

[root@server1 mnt]# touch dd [root@server1 mnt]# sh test.sh dd westos.org 写入成功 [root@server1 mnt]# cat dd westos.org 3.与数值比较相关的 test 选项 num1 -eq num2判断 num1 是否和 num2 相等num1 -ne num2判断 num1 是否和 num2 不相等num1 -gt num2判断 num1 是否大于 num2num1 -lt num2判断 num1 是否小于 num2num1 -ge num2判断 num1 是否大于等于 num2num1 -le num2判断 num1 是否小于等于 num2

#注意,test 只能用来比较整数,小数相关的比较还得依赖 bc 命令

eg:test.sh

#!/bin/bash read a b if test $a -eq $b then echo "两个数相等" else echo "两个数不相等" fi

测试结果:

[root@server1 mnt]# sh test.sh 2 3 两个数不相等 4.与字符串判断相关的 test 选项 z str判断字符串 str 是否为空-n str判断宇符串 str 是否为非空str1 = str2与str1 == str2=和==是等价的,都用来判断 str1 是否和 str2 相等。str1 != str2判断 str1 是否和 str2 不相等。str1 \> str2判断 str1 是否大于 str2。\>是>的转义字符,这样写是为了防止>被误认为成重定向运算符。str1 \< str2判断 str1 是否小于 str2。同样,\、= 和 、= 和


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3