7.shell之test命令

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

本文仅用作:学习笔记 

如有错误,欢迎纠正,谢谢

 

   

你可能感兴趣的:(Shell基础,shell的test命令)