If-then语句

Linux   2025-07-08 14:39   159   0  

if-then格式:

if command
then
    commands
fi

另外一种格式:

if command; then
conmmands
fi

if语句会运行if后面的命令,如果该命令的退出码是0(该命令成功运行),在执行then后的命令,如果退出码不是0,则不会执行then后的命令,fi表示if语句结束。 例如:

#!/bin/bash
if pwd
then
    echo "这是当前目录"
fi

if-then-else格式:

if command
then
    commands
else
    commands
fi

当if返回0时执行then中的语句,当if返回不是0时执行else中的语句。 嵌套if格式:

if command1
then
    commands
elif command2
then
    more commands
fi

test命令格式:

test condition

condition是test命令要测试的一系列参数和值。如果test命令中的条件成立,test就退出并返回0,如果不成立test退出并返回非零状态码。 test命令搭配if-then语句

if test condition
then
    commands
fi

另一种无需声明test命令的方法:

if [ condition ]
then
    commands
fi

方括号定义了测试条件,第一个方括号之后和第二个方括号之前必须加上一个空格,否则就会报错

if-then允许使用布尔逻辑来组合测试

  • • [ condition1 ] && [ condition2 ]

  • • [ condition1 ] || [ condition2 ]

第一种布尔运算使用AND布尔运算符来组合两个条件,要让then部分执行,两个条件都必须满足。

if-then的两个高级特性

  • • 用于数学表达式的双括号

  • • 用于高级字符串处理功能的双方括号

双括号命令格式

((expression))

expression可以是任意的数学赋值或比较表达式

双括号命令符号

符号描述
val++后增
val--后减
++val先增
--val先减
!逻辑求反
~位求反
**幂运算
<<左位移
>>右位移
&位布尔和
|位布尔或
&&逻辑和
||逻辑或

双方括号命令格式

[[ expression ]]

双方括号提供了针对字符串比较的高级特性。expression可使用模式匹配。

case命令case命令格式

case variable in
pattern1 | pattern2) commands1;;
pattern3) commands2;;
*) default commands;;
esac

case命令会将指定的变量与不同模式进行比较,如果变量和模式匹配,那么shell执行为该模式指定的命令,“*”会捕获所有与已知模式不匹配的值。


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。