使用test命令
首先当然是看一下test命令可以用来干什么:
- 文件属性测试
- 字符串测试
- 算术测试
命令格式有两种:
- test 测试语句
- [ 测试语句 ]
两种都可以 ,为了举例方便,我们用第一种举个栗子:
#test -d "$HOME" ; echo $?
0
//使用-d选项测试文件属性
#[ "abc" != "def" ] ;echo $?
0
//字符串比较
#test 7 -gt 3 && echo Ture || echo False
Ture
//算术比较
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
别着急,开胃菜而已,接下来才是正题,准备好了么?
文件属性测试操作符
- -e 文件存在为真
- -f 文件存在且是一个常规文件为真
- -d 文件存在且是一个目录为真
- -c 文件存在且是一个特殊字符文件为真
- -b 文件存在且是一个特殊块文件为真
- -p 文件存在且是一个命名管道为真
- -S 文件存在且是一个套接字为真
- -g 文件存在且设置了sgid位为真
- -u 文件存在且设置了suid位为真
- -r 文件存在且是可读的为真
- -w 文件存在且是可写的为真
- -x 文件存在且是可执行的为真
- -s 文件存在且不为空为真
- -nt 第一个文件比第二个文件新为真
- -ot 第一个文件比第二个文件旧为真
- -ef 第一个文件有硬链接到第二个文件为真
上栗子:更有助 于我们理解
[root@xieqc ~]# test -e /bin/cp && echo "the command $_ found." || echo "the command $_ not found ."
the command /bin/cp found.
//$_ 代表调用 前一个执行的命令中的最后一个参数
//检查命令/bin/cp是否存在
- 1
- 2
- 3
- 4
其他文件 属性判断同上格式可以进行使用
字符串测试操作
- -z 为空为真
- -n 不为空为真
- = 相同为真
- != 不相同为真
- < 字典顺序排在前为真
- 大于 号> 字典顺序排在后为真
需要注意的是:“<” “>” 这两个符号,同样用于重定向,所以必须使用“\” 字符来转义!
下面是举得栗子,尝尝:
[root@xieqc ~]# test "abc" = "cde" ;echo $?
1
[root@xieqc ~]# test “abc” != “cde” ;echo $?
0
[root@xieqc ~]# test “abc” < “cde” ;echo $?
0
[root@xieqc ~]# test “abc” > “cde” ;echo $?
1
[root@xieqc ~]# [ “abc” < “def” ];echo $?
0
[root@xieqc ~]# [ -z “” ];echo $?
0
[root@xieqc ~]# [ -n “abc” ];echo $?
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
算术测试操作
- -eq 等于
- -ne 不相等
- -le 小于或等于
- -ge 大于等于
- -lt 小于
- -ge 大于
看栗子:
[root@xieqc ~]# test 5 -eq 5 && echo Yes || echo No
Yes
[root@xieqc ~]# test 5 -ne 10 && echo Yes || echo No
Yes
[root@xieqc ~]# [ 5 -le 10 ] && echo Yes || echo No
Yes
[root@xieqc ~]# [ 5 -ge 10 ] && echo Yes || echo No
No
[root@xieqc ~]# [ 10 -ge 10 ] && echo Yes || echo No
Yes
[root@xieqc ~]# [ 10 -lt 10 ] && echo Yes || echo No
No
[root@xieqc ~]# [ 10 -gt 10 ] && echo Yes || echo No
No
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
if 条件判断语法结构
- 如果指定的条件为真,则执行指定的命令。
- 其中的条件判断可以用上面的test进行
废话少说,上脚本:
#!/bin/bash
#=================================
#
# FILE:checkpasswd.sh
# AUTHOR:Xie_qi_chao
# CREATED: 15/03/2019 23:09
#
#==================================
#如果提示用户输入密码的信息,然后从标准输入隐式的读取用户的输入,并将读取的内容赋值给变量pass
read -sp "Enther a password: " pass
#如果变量pass的指是xieqc,则显示密码验证通过的信息,然后推出脚本,退出状态码是0
if test “$pass” = “xieqc”
then
echo -e “\nPassword verified.”
exit 0
fi
#退出脚本,退出状态码为1
exit 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
上栗中,是同read命令读取 输入的密码(使用-s选项,标准输入的内容不会打印在终端),并将它存入变量$pass.下面的就应该可以看懂了,再解释下去,我都嫌自己啰嗦了,多敲多打多练哈。
下章讲条件判断里面的多分支结构,未完待续。。。。。。
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-b6c3c6d139.css" rel="stylesheet">
<div class="more-toolbox">
<div class="left-toolbox">
<ul class="toolbox-list">
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-thumbsup"></use>
</svg><span class="name">点赞</span>
<span class="count">1</span>
</a></li>
<li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-Collection-G"></use>
</svg><span class="name">收藏</span></a></li>
<li class="tool-item tool-active is-share"><a href="javascript:;" data-report-click="{"mod":"1582594662_002"}"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-fenxiang"></use>
</svg>分享</a></li>
<!--打赏开始-->
<!--打赏结束-->
<li class="tool-item tool-more">
<a>
<svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
</a>
<ul class="more-box">
<li class="item"><a class="article-report">文章举报</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="person-messagebox">
<div class="left-message"><a href="https://blog.csdn.net/xie_qi_chao">
<img src="https://profile.csdnimg.cn/B/F/6/3_xie_qi_chao" class="avatar_pic" username="xie_qi_chao">
<img src="https://g.csdnimg.cn/static/user-reg-year/1x/2.png" class="user-years">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit"><a href="https://blog.csdn.net/xie_qi_chao" data-report-click="{"mod":"popu_379"}" target="_blank">解启超</a></span>
</div>
<div class="text"><span>发布了357 篇原创文章</span> · <span>获赞 54</span> · <span>访问量 3万+</span></div>
</div>
<div class="right-message">
<a href="https://im.csdn.net/im/main.html?userName=xie_qi_chao" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
</a>
<a class="btn btn-sm attented bt-button personal-watch" data-report-click="{"mod":"popu_379"}">已关注</a>
</div>
</div>
</div>
</article>