加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Shell的条件表达式知识初步介绍实践

发布时间:2020-12-15 16:21:07 所属栏目:安全 来源:网络整理
导读:常见的文件测试操作符: -f 文件,英文file :文件存在且为普通文件则真,即测试表达式成立 -d 文件,英文directory :文件存在且为目录文件则真,即测试表达式成立 -s 文件,英文size :文件存在且文件大小不为0则真,即测试表达式成立。 -e文件,英文exist

常见的文件测试操作符:

-f 文件,英文file:文件存在且为普通文件则真,即测试表达式成立

-d 文件,英文directory:文件存在且为目录文件则真,即测试表达式成立

-s 文件,英文size:文件存在且文件大小不为0则真,即测试表达式成立。

-e文件,英文exist:文件存在则真,即测试表达式成立。只要有文件就行,要区别-f

-r 文件,英文read:文件存在且可读则真,即测试表达式成立。

-w文件,英文write:文件存在且可写则真,即测试表达式成立。

-x文件,英文executable:文件存在且可执行则真,即测试表达式成立。

-L文件,英文link:文件存在且为链接文件则真,即测试表达式成立。

f1 -nt f2 ,英文newer than:文件f1比f2新则真,即测试表达式成立。根据文件修改时间计算

f1 -ot f2,英文older than:文件f1比f2旧则真,即测试表达式成立。根据文件修改时间计算


特别说明,这些操作符对于[[]]、[]、test几乎是通用的,更多的操作符请man test查询。

文件测试表达式举例:

普通文件测试表达式举例:

测试普通文件:

[root@linux-node1~]#toucholdboy
[root@linux-node1~]#lloldboy
-rw-r--r--1rootroot0Sep1016:00oldboy
测试是否为文件
[root@linux-node1~]#[-foldboy]&&echo1||echo0
1
测试是否为目录
[root@linux-node1~]#[-doldboy]&&echo1||echo0
0
测试可读
[root@linux-node1~]#[-roldboy]&&echo1||echo0
1
测试可写
[root@linux-node1~]#[-woldboy]&&echo1||echo0
1
测试可执行
[root@linux-node1~]#[-eoldboy]&&echo1||echo0
1
[root@linux-node1~]#mkdiroldgirl
[root@linux-node1~]#[-foldgirl]&&echo1||echo0
0
[root@linux-node1~]#[-eoldgirl]&&echo1||echo0
1

测试目录:

[root@linux-node1~]#[-doldgirl]&&echo1||echo0
1

定义变量测试:变量最好加双引号,要不有时候不准确。

[root@linux-node1~]#file1=/etc/services
[root@linux-node1~]#file2=/etc/rc.local
[root@linux-node1~]#[-f$file1]&&echo1||echo0
1
[root@linux-node1~]#[-d$file1]&&echo1||echo0
0
[root@linux-node1~]#[-d"$file1"]&&echo1||echo0
0

传参测试:

[root@linux-node1~]#catt11.sh
[$1-eq3]&&{
echo1
echo1
echo1
}
[root@linux-node1~]#sht11.sh1
[root@linux-node1~]#sht11.sh
t11.sh:line1:[:-eq:unaryoperatorexpected
[root@linux-node1~]#sht11.sh2
[root@linux-node1~]#sht11.sh3
1
1
1
[root@linux-node1~]#catt11.sh
[$1-eq3]||{
echo1
echo1
echo1
}
[root@linux-node1~]#sht11.sh1
1
1
1
[root@linux-node1~]#sht11.sh12
1
1
1
[root@linux-node1~]#sht11.sh3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读