shell中的判断式
前言
在shell中不免会测试字符串是否为空、文件是否存在和文件是否为空等等。完成这些功能就需要使用到shell中的判断式。
test命令进行判断
某个路径的类型判断
举例:test -e filename
| 标志 | 意义 |
|---|---|
| -e | 测试该路径是否存在 |
| -f | 该路径是否存在且为文件 |
| -d | 该路径是否存在且为目录 |
| -b | 该路径是否存在且为block device |
| -c | 该路径是否存在且为character device |
| -S | 该路径是否存在且为Socket文件 |
| -p | 该路径是否存在且为PIPE文件 |
| -L | 该路径是否存在且为一个连结文件 |
路径的权限判断
举例:test -r filename
| 标志 | 意义 |
|---|---|
| -r | 判断路径是否存在且可以读 |
| -w | 判断路径是否存在且可写 |
| -x | 判断路径是否存在且可执行 |
| -u | 判断路径是否存在且具有SUID属性 |
| -g | 判断路径是否存在且具有SGID属性 |
| -k | 判断路径是否存在且具有sticky bit属性 |
| -s | 判断文档是否存在且为非空 |
两个文件之间比较
举例:test file1 -nt file2
| 标志 | 意义 |
|---|---|
| -eq | 两数值相等(不可以扩展到字符串比较) |
| -ne | 两数值不相等 |
| -gt | 大于 |
| -lt | 小于 |
| -ge | 大于等于 |
| -le | 小于等于 |
判断字符串
| 标志 | 意义 |
|---|---|
test -z string |
判断字符串是否为空 |
test -n string |
判断字符串是否为非空 |
test str1 == str2 |
判断两字符串是否相等 |
test str1 != str2 |
判断两字符串是否不相等 |
多重条件判定
举例:test -r filename -a -x filename
| 标志 | 意义 |
|---|---|
| -a | and,两者判断成立的时候才返回true |
| -o | or,两者条件成立一个就返回true |
| ! | not,相反才返回true,例如:test ! -x filename |
判断符号[]
使用判断符号和使用使用test命令基本上是一样的,注意使用判断符号时的空格十分重要。举例[▢1▢lt▢2▢](▢表示空格符号),特别注意例子中所有的分隔都是通过空格间隔的,尤其是中括号相邻的空格符号一定要注意用上。标志使用和test命令的无差别。
参考资料
鸟叔的linux私房菜:http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#ex_cal
判断符号[]补充资料来源:https://blog.csdn.net/qq_41586263/article/details/83014853
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinzhtao@163.com
文章标题:shell中的判断式
文章字数:609
本文作者:捌叁壹伍
发布时间:2019-11-14, 20:21:57
最后更新:2019-11-17, 17:38:16
原始链接:http://qzt8315.github.io/2019/11/14/shell中的判断式/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。