Linux shell “if else” 与 条件判定

Abstract:

1"if else" 执行控制;

2)数学逻辑条件比较与字符串比较。

 

1" if else " 执行控制

Linux Shell 里面实现 if else if else 执行控制如下:

if 条件;

then

    执行代码;

elif 条件;

then

    执行代码;

else

    执行代码;

fi

并且使用 "&&" 表示逻辑条件“与”,使用 "||"表示逻辑条件“或”。

 

2、条件比较

2.1 数学逻辑条件比较

Linux Shell 的数学比较条件必须符合如下格式:

[ 条件 ]

前后方括号与条件之间都必须有空格符,不然会报错!

note

多条件判断出了使用 "&&" "||" 之外,还可以如下表示:

[ $var1 -ne 0 -a $var2 -gt 2 ] # "-a" 等效于"&&"

[ $var -ne 0 -o var2 -gt 2 ] # "-o" 等效于"||"

2.1.1常用数学逻辑条件比较运算符

[ $var -eq 0 ] #返回真--如果变量为零

[ $var -ne 0 ] #返回真--如果变量不为零

[ $var -gt 0 ] #返回真--如果变量大于零

[ $var -lt 0 ] #返回真--如果变量小于零

[ $var -ge 0 ] #返回真--如果变量大于等于零

[ $var -le 0 ] #返回真--如果变量小于等于零

example:

#!/bin/bash

echo -e "\e[42;31m --- \"ifelse\" follow control ---\e[0m";
var1=3;
var2=5;
if [ $var1 -eq 3 ] && [ $var2 -eq 7];
then
   echo "var=3 && var2=7";
elif [ $var1 -eq 2 ] || [ $var2 -eq 7 ];
 then
    echo "var1=2";
else
    echo "var1=$var1 ; var2=$var2";
fi

2.1.2常用文件系统的条件判断

[ -f $var ]#判断变量值是否为一个合法的文件路径或文件名

[ -x $var ]#判断变量值是否为一个可执行文件

[ -d $var ]#判断变量值是否为一个文件夹路径

[ -e $var ]#判断变量值所指的文件是否存在

[ -c $var ]#判断变量值所指的文件是否为字符设备文件

[ -b $var ]#判断变量值所指的文件是否为块设备文件

[ -w $var ]#判断变量值所指的文件是否可写

[ -r $var ]#判断变量值所指的文件是否可读

[ -L $var ]#判断变量值所指的文件是否为一个链接文件

example

echo -e "\e[42;31m --- filesystemrelated attribute test ---\e[0m";
fpath="/etc/passwd"
if [ -e $fpath ]; then
echo File exists;
else
echo Does not exist;
fi

2.2 字符串条件比较

Linux Shell 字符串条件比较必须符合如下格式:

[[ 字符串比较条件 ]]

前后双方括号与条件之间都必须有空格符,不然会报错!

[[ $str1 = $str2 ]]#判断字符串是否相等

[[ $str1 == $str2 ]]#判断字符串是否相等

[[ $str1 != $str2 ]]#判断字符串是否不相等

[[ $str1 > $str2 ]]#判断str1是否字母序上大于str2

[[ $str1 < $str2 ]]#判断str1是否字母序上小于str2

[[ -z $str1 ]]#判断str1是否为空字符串

[[ -n $str1 ]]#判断str1是否不为空字符串

字符串比较同样支持使用 "&&" "||" 的组合进行多条件联合判断。

example

echo -e "\e[42;31m --- stringcomparison ---\e[0m";
str1="Not empty "
str2=""
if [[ -n $str1 ]] && [[ -z $str2]];
then
echo str1 is non-empty and str2 is emptystring.
fi

2.3 使用 test 命令进行条件判断可以避免使用方括号

test 命令可以替代上面提到的所有方括号表示的条件判断,并且比较的运算符都是兼容的;使用 man test 命令自行查看 test 命令的使用详情。

example

echo -e "\e[42;31m --- using\"test\" command to substitute using square bracket ---\e[0m";
var=1;
if test $var -eq 0;
then
echo "True";
else
echo "False";
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值