文章目录
-
目录
文章目录
前言
一.条件测试
概述:
文件测试
整数测试:
总结
前言
当我们完成某一命令的编写时,除了观察输出的内容,我们又如何得知命令是否执行成功呢?
这里,我们需要用到条件测试
一.条件测试
概述:
条件测试是在Shell脚本中非常重要的一部分,它们用于测试脚本中的变量或表达式是否成立。
分类:
-
test:条件测试的标准命令。例如,使用test命令测试一个变量的值是否等于某个值。
-
[ ]:方括号(中括号)是test的另一种形式,它们被称为test的别名。例如,[ $var -eq 10 ] 表示测试变量 $var 是否等于10。
-
[[ ]]:双方括号是Bash Shell的重要特性,比test和[ ]更强大,可以使用通配符等进行模式匹配,&& || > < 等操作符可以直接应用于双中括号中,但不能用于[ ]
-
(( )):该操作符用于算术运算测试。可使用数学符号> < = 不需要使用参数 例如,使用(( num > 10 )) 测试变量 $num 是否大于10。
语法格式:
- 格式1: test -参数 条件表达式
- 格式2: [ 条件表达式 ] # 注意:[]的左右要有 空格
- 格式3: [[ 条件表达式 ]] # 注意:[]的左右要有 空格
- 格式4: ((条件表达式)) #注意:不需要左右有 空格
结果测试:
- test单独使用,判断条件为真,echo $? 真返回0,假返回1
案例 1
#执行成功
[root@server ~]# test -f /etc/passwd
[root@server ~]# echo $?
0
#执行失败
[root@server ~]# test -f /etc/aa
[root@server ~]# echo $?
1
[root@server ~]# test -f /etc/passwd && echo 1 || echo 0
1
[root@server ~]# [-f /etc/passwd] # 注意:[] 中要有空格
bash: [-f: command not found...
文件测试
格式:如上
参数:
- -f:测试是否为普通文件
- -d:测试是否是目录
- -e:检测文件是否存在 存在返回true
- -s:测试文件是否为空,文件为空返回true
- -r:存在且可读
- -w:存在且可写
- -x:存在且可执行
案列 1:
[root@server ~]# [ -d /root ] && echo y || echo n
y
案例 2:编写脚本测试文件是否存在
[root@server ~]# vim temp1.sh
#!/bin/bash
FILE=$1 #$1代表位置变量,此处以及下面一行改为read -p "请输入文件名: " FILE
echo FILE
if test -e $FILE
then
echo "$FILE文件已存在"
else
echo "$FILE文件不存在,开始新建..."
touch $FILE
ls -l $FILE
fi
[root@server ~]# bash temp1.sh /etc/passwd #位置变量$1代表/etc/passwd
/etc/passwd
/etc/passwd文件已存在
整数测试:
作用:
- 用于比较两个数值的大小关系,操作的对象是数值
案例:
[root@server ~]# [ 5 -gt 3 ] && echo y || echo n
y
n
拓展知识:
# 检查左侧内容是否包含右侧的表达式,可以使用 =~ 正则
匹配,表示是否包含
[root@server ~]# n=123
[root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
y
[root@server ~]# n=123ttt
[root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
n