Linux-Shell之比较和测试

程序中的流程控制是由比较和测试语句来处理的。在Bash中具备多种和UNIX系统特性相兼容的执行测试方法。

在Shell中我们可以用if,if else以及逻辑运算符来执行测试,而用一些比较运算符来比较数据项。

if测试

if条件:

if condition;
then
commands;
fi

在这里会以fi结尾用于提示if的结束。

else if和else

if condition;
then
commands;
elif condition;
then 
   commands;
else
   commands
fi

在if判断的条件中我们也可以使用逻辑运算符进行组合判断
[ condition ]&& action;#如果condition为真,则执行action
[ condition ]|| action;#如果为假,则执行action。
在这里注意[和]两个符号之间和中间的condition都会有个空格。

算数比较

在shell中有几个比较重要的比较符:

-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-ge:大于或等于
-le:小于或等于
-a:逻辑于
-o:逻辑或

文件系统相关测试

我们可以使用不同的条件标志测试不同的文件系统相关属性。

[ -f  $file_var ]:如果给定的变量包含正常的文件路径或文件名,则返回真。
[ -x $var ]:如果给定的变量包含文件可执行,则返回真。
[ -d $var ]:如果给定的变量是目录则返回真。
[ -e $var ]:如果给定的变量包含的文件存在,则返回真
[ -c $var ]:如果给定的变量包含的是一个字符设备文件的路径,则返回真
[ -b $var ]:如果给定的变量包含的是一个块设备文件的路径,则返回真
[ -w $var ]:如果给定的变量包含的文件可写,则返回真
[ -r $var ]:如果给定的变量包含的文件可读,则返回真
[ -L $var ]:如果给定的变量包含一个符号链接,则返回真

举例测试:
#! /bin/bash
fpath="/etc/passwd"
if [ -e $fpath ];then
echo File exits;
else
echo dose not exits;
fi

输出File exits

字符串比较

使用字符串比较时,最好使用双中括号,防止使用单个中括号会产生错误,所以最好避开它们。
可以检查两个字符串,看看它们是否相同。
在shell中=和==在比较的时候都是一样的

[[ $str1 = $str2 ]][[ $str1 == $str2 ]]一样,如果相等就返回true[[ $str1 > $str2 ]]如果str1字母序比str2大就返回真。
[[ -z $str1 ]]:如果str1包含的是空字符串,则返回真。
[[ -n $str1 ]]:如果str1包含的是非空字符串,则返回真。
举例如下:
#! /bin/bash
str1="not empty"
str2=""
if [[ -n $str1 ]] && [[ -z $str2 ]];
then
echo ok;
fi
输出OK
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值