bash shell中的if-then语句

 更新时间:2023年12月26日 09:54:53   作者:恒友成  
bash shell的 if 语句会运行 if 后面的那个命令,如果该命令的退出状态码是0,位于 then 部分的命令就会被执行,这篇文章主要介绍了bash shell中的if-then语句,需要的朋友可以参考下

shell中的流控制if语句

简单的脚本可以只包含顺序执行的命令,但结构化命令允许根据条件改变程序执行的顺序。

if语句

if-then语句

if-then语句格式如下:

if command
then
    commands
fi

在其他编程语言中, if 语句之后的对象是一个等式,这个等式的求值结果为 TRUEFALSEbash shellif 语句会运行 if 后面的那个命令。如果该命令的退出状态码是0,位于 then 部分的命令就会被执行。

#!/bin/bash
if pwd
then
        echo "pwd worked"
fi

输出:

# rob@xx-rob:~$ ./test1
/home/rob
pwd worked

if-then-else 语句

格式:

if command
then
    commands
else
    commands
fi

示例:

v=bin
if grep $v pwd
then
	echo "pwd worked"
else
	echo "cannot find $v"
fi

结果:

rob@xx-rob:~$ ./test1
# grep: pwd: 没有那个文件或目录
# cannot find bin

if还可以嵌套多层:

if command1
then
command set 1
elif command2
then
command set 2
elif command3
then
command set 3
elif command4
then
command set 4
fi

test命令

bash shell if语句的条件是command,如果要使用常规的数值/字符串比较条件,需要使用test命令。

使用test命令的if-then-fi语句:

if test condition
then
commands
fi

如果不写 test 命令的condition部分,它会以非零的退出状态码退出,并执行 else语句块。

加入条件时,test 命令会测试该条件。

bash shelltest命令的另外一种写法是使用[ condition ] 中括号,第一个方括号之后和第二个方括号之前必须加上一个空格,
否则就会报错。

if中条件判断的几个条件:

  • 判断变量是否有值if test ${variable}
  • 数值比较
  • 字符串比较
  • 文件比较

数值比较

test命令的数值比较功能:

比较描述
n1 -eq n2检查 n1 是否与 n2 相等
n1 -ge n2检查 n1 是否大于或等于 n2
n1 -gt n2检查 n1 是否大于 n2
n1 -le n2检查 n1 是否小于或等于 n2
n1 -lt n2检查 n1 是否小于 n2
n1 -ne n2检查 n1 是否不等于 n2
#!/bin/bash
if test 100 -le 145; then
	echo "100 is smaller than 145"
fi
v=12
if [ $v -eq 12 ];then
	echo "value is 12"
fi

bash shell只能处理整数,不能使用浮点数作为判断条件。

字符串比较

bash shell条件测试还允许比较字符串值,比较字符串比较烦琐。

比较描述
str1 = str2检查 str1 是否和 str2 相同
str1 != str2检查 str1 是否和 str2 不同
str1 < str2检查 str1 是否比 str2 小
str1 > str2检查 str1 是否比 str2 大
-n str1检查 str1 的长度是否非0
-z str1检查 str1 的长度是否为0

bash sehll中比较运算符需要使用转义,否则会被当成重定向运算符。

s1="val"
s2="thi"
# 升成`thi`的文件
if [ $s1 > $s2 ];
then
    echo "new file $v2 has been created."
fi
if [ $s1 \> $s2 ];
then
    echo "$s1 is greater than $s2."
fi

比较测试中使用的是标准的ASCII顺序,根据每个字符的ASCII数值来决定排序结果。在比较测试中,大写字母被认为是小于小写字母的。

文件比较

测试Linux文件系统上文件和目录的状态。

命令描述
-d file检查 file 是否存在并是一个目录
-e file检查 file 是否存在
-f file检查 file 是否存在并是一个文件
-r file检查 file 是否存在并可读
-s file检查 file 是否存在并非空
-w file检查 file 是否存在并可写
-x file检查 file 是否存在并可执行
-O file检查 file 是否存在并属当前用户所有
-G file检查 file 是否存在并且默认组与当前用户相同
file1 -nt file2检查 file1 是否比 file2 新
file1 -ot file2检查 file1 是否比 file2 旧

if-then 语句允许你使用布尔逻辑来组合测试,有两种布尔运算符可用:

  • [ condition1 ] && [ condition2 ]
  • [ condition1 ] || [ condition2 ]

case语句

在尝试计算一个变量的值,在一组可能的值中寻找特定值,可能不得不写出很长的 if-then-else语句。case
令会采用列表格式来检查单个变量的多个值。

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

一个例子:

c=1
case $c in
1 | 2) echo "1";;
3) echo "23";;
esac

到此这篇关于bash shell中的if-then语句的文章就介绍到这了,更多相关shell if-then语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解 linux mysqldump 导出数据库、数据、表结构

    详解 linux mysqldump 导出数据库、数据、表结构

    这篇文章主要介绍了详解 linux mysqldump 导出数据库、数据、表结构的相关资料,需要的朋友可以参考下
    2017-05-05
  • linux每天定时备份数据库并删除十天前数据详细步骤

    linux每天定时备份数据库并删除十天前数据详细步骤

    每天定时备份数据库需要用到Linux的定时任务,利用Linux的crondtab 命令。下面通过本文给大家带来了linux每天定时备份数据库并删除十天前数据详细步骤,感兴趣的朋友一起看看吧
    2018-06-06
  • linux修改文件名的三种方法

    linux修改文件名的三种方法

    我们在使用linux系统过程中为了便于记忆或整理维护,经常需要对文件名进行修改,下面文章介绍了linux系统的三种修改文件名称的方式,需要的朋友可以参考下
    2023-09-09
  • 详解Linux ln 命令

    详解Linux ln 命令

    Linux 中的文件分为 Hard Link 和 Symbolic Link 两种。Hard Link 文件又被称为硬链接文件、实体链接文件,Symbolic Link 文件则常被称为符号链接、软链接文件。这篇文章主要介绍了Linux ln 命令 ,需要的朋友可以参考下
    2019-08-08
  • Shell中echo如何输出颜色字体

    Shell中echo如何输出颜色字体

    在CentOS/Redhat系统中,可以使用`echo -e`结合ANSI转义码来输出彩色文本,基本格式是`echo -e "\033[样式;前景色;背景色m文本\033[0m"`,常用颜色码包括31(红色)、32(绿色)等,建议定义变量简化代码,并注意终端兼容性和非交互式环境
    2026-03-03
  • Linux常用命令之性能命令

    Linux常用命令之性能命令

    这篇文章主要介绍了Linux常用命令之性能命令,文章讲解的很清楚,有对于这方面不了解的同学可以研究下
    2021-02-02
  • Linux查看系统配置信息的命令详解

    Linux查看系统配置信息的命令详解

    Linux操作系统由Linux内核和各种外围程序组成, Linux内核是一个特殊的软件程序,用于实现CPU和内存分配,进程调度、设备驱动等核心操作,本文给大家介绍了Linux查看系统配置信息的命令,需要的朋友可以参考下
    2024-04-04
  • shell进阶awk命令编排字段使用详解

    shell进阶awk命令编排字段使用详解

    这篇文章主要为大家介绍了shell进阶awk命令编排字段使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Shell(())实现对整数进行数学运算

    Shell(())实现对整数进行数学运算

    这篇文章主要介绍了Shell(())实现对整数进行数学运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Linux Shell 脚本编程入门教程

    Linux Shell 脚本编程入门教程

    Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),Shell是用户与Linux操作系统沟通的桥梁,对本文感兴趣的朋友一起看看吧
    2015-11-11

最新评论