bash shell 脚本学习笔记-判断语句和逻辑运算符

if判断语句使用
if-than
if command;then commands; fi

if-than-else
if command;then commands;
elif condition;then commands;
else commands
fi
commands是shell命令,shell命令执行完就会返回退出状态吗,成功就返回零,不成功返回非零的
if-then只能判断shell命令的退出状态码,如果想要测试其他条件需要借助工具test。
test 列出的条件成立test返回退出状态码0。如果条件不成立,test命令就会退出并返回非零的退出状态码。这样if就可通过test返回的退出状态来执行commands了。
用法:
if test condition
then
commands
fi
bash shell还提供了另一个条件测试方法,无需在if-then语句中声明test命令。
用法:
if [ condition ]
then
commands
fi
格式注意: =前后各要有空格 ;中括号两头要空格 [[ 比较内容 ]]

如果不写condition,test返回非零状态码
test具体可以做些什么呢,下面例子来看看
test可以判断变量是否有内容,如果有内容返回零,如果没有内容就返回非零的

test可以判断三类条件
1、数值比较
2、字符串比较
3、文件比较

数值比较:

[ v a r − e q 0 ] 当 var -eq 0 ] 当 vareq0]var等于0时,返回真
[ v a r − n e 0 ] 当 var -ne 0 ] 当 varne0]var为非0时,返回真
其他重要操作符
-gt 大于
-lt 小于
-ge 大于或者等于
-le 小于或等于
-a 逻辑与 [ $var -ne 0 -a $var -gt 2 ]
-o 逻辑或

文件比较

[ -f file ] 检查file是否存在并是一个文件
[ -d file ] 检查file是否存在并是一个目录
[ -L $var ] 检查file是否存在,并是一个链接文件
[ -e file ] 检查file是否存在
[ -c $var ] 如果给定的变量包含的是一个字符设备文件路径,则返回真
[ -b $var ] 如果给定的变量包含是一个块设备文件的路径,则返回真
[ -w $var ] 检查file是否可写
[ -r $var ] 检查file是否可读
[ -x file ] 检查file是否存在并可执行
-s file 检查file是否存在并非空
-O file 检查file是否存在且属当前用户所有
-G file 检查file是否存在且默认组与当前用户相同
[ file1 -nt file2 ] 检查file1是否比file2新
[ file1 -ot file2 ] 检查file1是否比file2旧

字符串比较

使用字符串比较时,最好用双中括号,因为有时候采用单个中括号会产生错误
[ $str1 = s t r 2 ] 当 str2 ] 当 str2]str1=$str2时返回真,还可以写成 [[ $str1 == $str2 ]]
[ $str1 != s t r 2 ] 当 str2 ] 当 str2]str 不等于 $str2 时返回真
检查字符串的字母序情况
[ $str1 > $str2 ] 如果str1的字符序比str2大,则返回真
[ $str1 < $str2 ] 如果str1的字符串比str2小,则返回真
[ -z $str1 ] 如果str1包含的是空字符串,则返回真
[ -n $str1 ] 如果str1包含的是非空字符串,则返回真

双括号,双括号可以允许你使用高等数学表达式。
用法:
(( expression ))
双括号的命令符号
val ++ 后增
val – 后减
++val 先增
–val 先减
! 逻辑求反
~ 位求反
** 冥运算
<< 左位移
>> 右位移
& 位布尔和
| 位布尔或
&& 逻辑和
|| 逻辑或

双中括号。双中括号提供了针对字符串比较的高级特性。
这些通过通过“||” 或者“&&”进行组合使用
[ condition ] && action 如果condition为真,则执行action
[ condition ] || action 如果condition为假时,则执行action

case命令
用法:
case variable in
pattern | pattern2) commands1;;
pattern3) commands2;;
*) default commands;;
esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值