Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
1.test命令是啥
①还记得if条件判断吗?
在if判断中,使用[ ]来包裹条件,但是有严格的条件:1.if与[之间必须有空格 2.[ ]与条件之间必须有空格 3.两个变量判断是也是必须有空格. 如:if_[_${a}_==_${b}_]。(_全部代表空格)
#!/bin/bash
a=100 b=100
if [ ${a} == ${b} ]
then
echo '等于'
else
echo '不等于'
fi
②虽然 Linux 和 UNIX 的每个版本中都包含 test 命令,但该命令有一个更常用的别名 —— 左方括号:[。test 及其别名通常都可以在 /usr/bin 或 /bin (取决于操作系统版本和供应商)中找到。
当您使用左方括号而非 test 时,其后必须始终跟着一个空格、要评估的条件、一个空格和右方括号。右方括号不是任何东西的别名,而是表示所需评估参数的结束。条件两边的空格是必需的,这表示要调用 test,以区别于同样经常使用方括号的字符/模式匹配操作。
③你会发现:if_[_${a}_==_${b}_]。(_全部代表空格)其实就是使用test命令的另一种展示方式。
④test语法:
test expression ----test写法
[ expression ] ----空格写法
#备注:
1.要么使用test命令,
2.要么使用[ exexpression ress ]加空格的格式
2.实例
#!/bin/bash
a=100 b=100
echo '.....................................'
#比较a和b是否相等
#1.[ ]带空格方式
if [ ${a} == ${b} ]
then
echo '等于'
else
echo '不等于'
fi
#2.test方式
if test ${a} == ${b}
then
echo '等于'
else
echo '不等于'
fi
echo '.....................................'
c="Mary" d="Lucy"
#逻辑与或操作
#1.[ ]带空格方式
if [[ ${a} == ${b} && ${c} != ${d} ]] #此处必须两个[[ ]]
then
printf "true\n" #printf和echo一样,都是输出字符串的意思。printf
else #唯一区别就是:printf默认不会自动添加换行符,echo会默认添加换行符
printf "false\n" #所以此处使用printf,需要手动添加换行符\n
fi
echo "...................................."
#2.test方式
if test [${a} == ${b} && ${c} != ${d}] #此处需要在条件上加[],但是不需要空格
then
echo "true"
else
echo "false"
fi
3.如何选择使用
[ ]带空格,毕竟只是test的另一个简化方式。
可以随自己选择,哪个写着方便用哪个。
4.test用于文件方面操作
可参考:https://www.runoob.com/linux/linux-shell-test.html
本文仅用作:学习笔记
如有错误,欢迎纠正,谢谢