shell脚本的条件测试和重定向符

条件测试

在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时候也会与 if 等条件语句相结合,来完成测试判断,以减少程序运行错误。

test

test命令用于条件测试,test的意义等于[]的意义,进行条件测试后通常跟&& 或||来判断执行的成功与否。
格式:

test a == b && echo y || echo n && 是且的意思,前面的成了执行这个,||是非的意思,前面的不成,执行这个 前面的执行成功与否放在后面进行判断
[ a == b ] && echo y || echo n  ==表示等于的意思 !=表示不等于  单个=号是赋值的意思

在[]中上面的等号可以替换为别的检测方式
文件测试的相关选项:
-d:测试是否为目录
-e:测试目录或文件是否存在
-f:测试是否为文件
-L:测试是否为链接文件
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-r:测试当前用户是否有权读取
-w:测试当前用户是否有权写入
-x:测试是否设置有可执行权限
-s:测试存在且文件大小为空
-a:逻辑与,且
-o :逻辑或,或
-n:测试是否为非空
-z:测试是否为空值
整数测试的相关选项:
-eq:a等于b
-ne:a不等于b
-gt:a大于b
-lt:a小于b
-le:a小于等于b
-ge:a大于等于b

[ -n "$a" ] && echo y || echo n  -n测试字符是否为非空数值  -z测试字符是否为空值
n
[ -n"$a" ] && echo y || echo n
y
[ -n  ] && echo y || echo n
y
[ -n   ] && echo y || echo n
y
[ -n ] && echo y || echo n
y
[ 7 -eq 8 ] && echo y || echo n
n
[ 5 -eq 5 ] && echo y || echo n
y
[ 4 -ne 4 ] && echo y || echo n
n
[ 8 -lt 8 ] && echo y || echo n
n
[ 2 -gt 2 ] && echo y || echo n
n
[ 1 -ge 1 ] && echo y || echo n
y
[ 1 -le 1 ] && echo y || echo n
y

重定向符

重定向符用于向文件中覆盖或追加内容。
标准输入:从该设备接收用户输入的数据。
标准输出:通过该设备向用户输出数据。
标准错误:通过该设备报告执行出错信息。
<:将文件中的内容输入前面的命令
>:将正确的内容输入至文件并覆盖文件中的内容
>>:将正确的内容追加至文件
2>:将错误的内容输入文件并覆盖文件中的内容
2>>:将错误的内容追加至文件
&>:将错误的和正确的内容都输入至文件中

[root@localhost ~]# mkdir /1/2/3/4 2>>2.txt 
[root@localhost ~]# cat 2.txt
mkdir: 无法创建目录"/1/2/3/4": 没有那个文件或目录
[root@localhost ~]# echo 123 >>1.txt
[root@localhost ~]# cat 1.txt
123
[root@localhost ~]# mkdir /2/3/4/5 &>>3.txt;echo 233 &>>3.txt   ;号表示将两个命令分开执行
[root@localhost ~]# cat 3.txt
mkdir: 无法创建目录"/2/3/4/5": 不是目录
233
linux系统中有一个相当于windows垃圾箱的文件/dev/null可以把错误信息通过2>>&>>的方式丢进去以减少磁盘容量的占用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值