条件测试操作 命令一

问题
本案例要求参考PPT上的示例,分别练习以下条件测试操作:
识别文件/目录的状态
比较整数值的大小
字符串匹配
多个条件/操作的逻辑组合
步骤
实现此案例需要按照如下步骤进行。
步骤一:条件测试的基本用法
1)一般用法
使用“test 表达式”或者[ 表达式 ]都可以,表达式两边至少要留一个空格。比如,判断变量X的值是否大于5,操作如下:
[root@svr5 ~]# X=10
[root@svr5 ~]# test $X -gt 5
上述test测试也可改用 [ ]方式(推荐用这种方式):
[root@svr5 ~]# [ $X -gt 5 ]
[root@svr5 ~]#
条件测试操作本身不显示出任何信息。测试的条件是否成立主要体现在命令执行后的返回状态(即 ? ) , 所 以 可 以 在 测 试 后 查 看 变 量 ?),所以可以在测试后查看变量 ??的值来做出判断,或者结合&&、||等逻辑操作显示出结果(或作其他操作) 。
比如,分别测试变量X的值(10)是否大于5、是否大于20:
[root@svr5 ~]# [ $X -gt 5 ]
[root@svr5 ~]# echo $?
0 //返回值为0,说明测试的条件成立
[root@svr5 ~]# [ $X -gt 20 ]
[root@svr5 ~]# echo $?
1 //返回值不为0,说明测试的条件不成立
或者,结合逻辑分隔更直接的给出结果:
[root@svr5 ~]# [ $X -gt 5 ] && echo “YES” || echo “NO”
YES //因为10>5,所以 YES
[root@svr5 ~]# [ KaTeX parse error: Expected 'EOF', got '&' at position 12: X -gt 20 ] &̲& echo "YES" ||…?。比如,若要检查一个软件包是否安装,正常可以执行“rpm -q 软件名”查询,人工可以直接看显示结果,脚本却没有那么智能,怎么办呢,就看返回值 ? 。 比 如 , 分 别 查 询 一 个 已 安 装 的 包 、 未 安 装 的 包 , ?。 比如,分别查询一个已安装的包、未安装的包, ?? 返回值是不同的:
[root@svr5 ~]# rpm -q httpd
httpd-2.2.3-74.el5
[root@svr5 ~]# echo $?
0
[root@svr5 ~]# rpm -q nginx
package nginx is not installed
[root@svr5 ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 38: …: [root@svr5 ~]#̲ rpm -q httpd &… [ -r “/tmp/rtest.txt” ] && echo “可读” || echo “不可读”
不可读
普通用户只对自己拥有r权限的文件或目录,-r测试时结果才成立:
[zengye@svr5 ~]$ ls -l .bashrc
-rw-r–r-- 1 zengye zengye 124 09-24 16:44 .bashrc
[zengye@svr5 ~]$ [ -r “.bashrc” ] && echo “可读” || echo “不可读”
可读
5)-w 判断对象是否可写
此测试同样对root用户无效,无论文件是否设置w权限,root都可写:
[root@svr5 ~]# chmod -w /tmp/rtest.txt //去掉所有的w权限
[root@svr5 ~]# ls -l /tmp/rtest.txt //确认设置结果
---------- 1 root root 33139 12-11 10:43 /tmp/rtest.txt
[root@svr5 ~]# [ -w “/tmp/rtest.txt” ] && echo “可写” || echo “不可写”
可写
切换为普通用户,可以正常使用-w测试:
[zengye@svr5 ~]$ ls -l /tmp/rtest.txt
---------- 1 root root 33139 12-11 10:52 /tmp/rtest.txt
[zengye@svr5 ~]$ [ -w “/tmp/rtest.txt” ] && echo “可写” || echo “不可写”
不可写
[zengye@svr5 ~]$ ls -l .bashrc
-rw-r–r-- 1 zengye zengye 124 09-24 16:44 .bashrc
[zengye@svr5 ~]$ [ -w “.bashrc” ] && echo “可写” || echo “不可写”
可写
6)-x 判断对象是否具有可执行权限
这个取决于文件本身、文件系统级的控制,root或普通用户都适用:
[root@svr5 ~]# chmod 644 /tmp/rtest.txt //重设权限,无x
[root@svr5 ~]# ls -l /tmp/rtest.txt //确认设置结果
-rw-r–r-- 1 root root 33139 12-11 10:52 /tmp/rtest.txt
[root@svr5 ~]# [ -x “/tmp/rtest.txt” ] && echo “可执行” || echo “不可执行”
不可执行
[root@svr5 ~]# chmod +x /tmp/rtest.txt //添加x权限
[root@svr5 ~]# [ -x “/tmp/rtest.txt” ] && echo “可执行” || echo “不可执行”
可执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值