Bash编程入门之条件测试(三)

条件测试语法

在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作,有时也会通过与if等条件语句相结合,让我们可以方便的完成判断。

语法

支持三种格式的条件测试语法

  • test<测试表达式>
  • [ <测试表达式> ]
  • [[ <测试表达式> ]]

格式1和格式2是等价的,格式3为扩展的test命令

在[[]]中可以使用通配符进行匹配。&&、||、>、<等操作符可以应用与[[]]中,但不能应用与[]中。

范例

文件存在则输出1,文件不存在则输出0

[[email protected] ~]#  [ -f /etc/passwd ] && echo 1||echo 0
1
[[email protected] ~]# test -f /etc/passwd && echo 1||echo 0
1
[[email protected] ~]#  [[ -f /etc/passwd ]] && echo 1||echo 0
1
[[email protected] ~]#  [[ -f /etc/passd ]] && echo 1||echo 0
0

非!的写法
test.txt文件如果不存在,则创建。

[[email protected] ~]# test ! -f test1.txt && touch test.txt || ehco "test1.txt已经存在"
[[email protected] ~]# test ! -f test1.txt && touch test1.txt || echo "test1.txt已经存在"
test1.txt已经存在
[[email protected] ~]# [ ! -f test.txt ] && touch test.txt || echo 'test.txt已经存在'
[[email protected]~]# [ ! -f test.txt ] && touch test.txt || echo 'test.txt已经存在'
test.txt已经存在

test 或 [] 测试语法

从功能上来看 test 测试表达式 命令等同于 [测试表达式] ,因此这里将它们归纳在一起进行总结。

数值测试

参数说明

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于则为真

范例

判断两个数是否相等

[[email protected] ~]# num1=1
[[email protected] ~]#chenfanlinux num2=2
[[email protected] ~]# [ $num1 -eq $num2 ] && echo "两个数相等" || echo "两个数不相等"
两个数不相等

数值运算

[[email protected] ~]# a=5
[[email protected] ~]# b=6
[[email protected] ~]# c=$[a+b]
[[email protected] ~]# echo $c
11

[[email protected] ~]# ((c=a+b))
[[email protected] ~]# echo $c
11

[[email protected] ~]# c=`expr $a + $b`
[[email protected] ~]# echo $c
11

[[email protected] ~]# let c=a+b
[[email protected] ~]# echo $c
11
  • (())
  • let
  • expr
  • bc(小数)
  • $[]

字符串测试

参数说明

参数 说明
“串1” = “串2” 若串1等于串2则真,可以使用”==”代替”=”
“串1” != “串2” 若串1不等于串2则真,但不能用”!==” 代替”!=”
-z “字符串” 若串长度为0则真,-z可以理解为zero
-n “字符串” 若串长度不为0则真,-n可以理解为no zero

范例

比较两个字符串是否相同

num1="chenfan"
num2="chenfanlinux"
if [ "$num1" = "$num2" ]
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi

文件测试

参数说明

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

以上表格中的字符串测试操作符号务必要用 “字符串” 引起来。

范例

文件存在则打印存在

cd /bin
if test -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

逻辑操作符

参数说明

范例

判断文件是否同时存在

[[email protected] ~]# f1='/etc/rc.local'
[[email protected] ~]# f2='/etc/pass'

[[email protected] ~]# [ -f "$f1" -o -f "$f2" ] && echo 1|| echo 0
1
[[email protected] ~]# [ -f "$f1" -a -f "$f2" ] && echo 1|| echo 0
0

原文:大专栏  Bash编程入门之条件测试(三)

原文地址:https://www.cnblogs.com/chinatrump/p/11597021.html

时间: 2024-10-09 03:05:30

Bash编程入门之条件测试(三)的相关文章

Linux bash编程入门

一.bash编程入门 编程语言: 编译型语言:编译器  c,c++ 解释型语言:解释器 解释器可独立运行 变量:保持数据的载体,命令的内存空间 本地变量: 环境变量 局部变量: 位置参数变量:$1,$2..., 特殊变量: $0 当前脚本的名字 shell脚本:shebang #!/bin/bash         #解释此脚本的shell路径,内核调用对应的解释器来解释脚本 #Description: #Version: #Author: #License: #Datetime: 脚本文件,其

bash脚本基础入门之条件测试

在运行bash命令的时候,无论成功还是失败都会返回为用户返回一个执行的结果,通常把他叫做退出状态码,每当我们运行命令的时候,退出状态码都会被记录在$?变量中,在命令行echo $?可以查看命令的执行结果,成功的值为0,失败的值为1-255之间的某个值. 注:在shell脚本中,退出状态码记录的是脚本最后一条命令,为方便检查脚本错误,可以使用exit #自定义退出状态码. shell结构化命令中,如if...then语句.while...do...done语句等的CONDITION条件都是以命令的

bash编程之:条件测试

日期: 2015年09月13日 <<========================================[条件测试]========================================>> 条件测试 bash的条件测试主要有以下3类: 整数测试:比较两个整数谁大谁小,是否相等: 字符测试:比较两个字符串是否相等: 文件测试:测试某个文件是否具有读权限.写权限.执行权限等: (1) 根据运行的命令的状态结果判断 (2) 在bash中进行条件测试的方式通常有三种

Shell脚本编程算术运算和条件测试

算术运算 1.bash中的算术运算:help let +, -, *, /, %取模(取余), **(乘方) 实现算术运算: (1) let var=算术表达式 (2) var=$[算术表达式] (3) var=$((算术表达式)) (4) var=$(expr arg1 arg2 arg3 ...) (5) declare –ivar= 数值 (6) echo '算术表达式' | bc 2.乘法符号有些场景中需要转义,如* 3.bash有内建的随机数生成器: $RANDOM(0-32767)

bash算数运算和条件测试语句

一.利用bash脚本编程实现算术运算: 1) +.-:加运算 *./ %:模运算,取余数 **|^ 2)增强型的算术运算符号: += :let B=B+2   --> let B+=2 -= :let B=B-2 --> let B-=2 *= :let B=B*2 --> let B*=2 /= :let B=B/2 --> let B/=2 %= :let B=B%2 --> let B%=2 3)特殊的增强型算术运算: let B=B+1   --> let B+

bash的算术运算与条件测试

在使用bash过程中,一些简单的算术运算我们可以用bash来完成. 利用bash脚本编程实现算术运算,下面列举一些常用的运算符: +.- 加减 *./ 乘除 %:模运算,取余数 **|^ 幂运算 增强型的算术运算符号: += :let B=B+2             --> let B+=2 -= :let B=B-2 --> let B-=2 *= :let B=B*2 --> let B*=2 /= :let B=B/2 --> let B/=2 %= :let B=B%2

bash的算术运算和条件测试语句

shell脚本编程: shell脚本的内容和格式: 首行,绝对行首,shebang(解释器程序的绝对路径) 注释信息:以#占据绝对行首的行: 为了能在程序中突出程序的功能,适当的添加空白行,以分隔不同功能的源代码块: 有一定的缩进 利用bash脚本编程实现算数运算: + - * / % 模运算 取余 **|^ 乘方 增强型算术运算符号: +=  let B=B+1 ---> let B+=1 -= /= *= %= 特殊的增强型算术运算: B=B+1  B+=1  B++ 算数运算方法: 1.l

bash的算术运算和条件测试语句基础

编程语言包括问题空间和解空间 ,问题空间就是使用人类的自然语言描述的任务,解空间就是使用编程语言描述任务的实施步骤和显示的最终结果. 编程思想,就是能够把编程语言所提供的语法格式,随时随地的转换成解决问题的思路.我们学习编程语言的目的就是将目的空间和解空间对应起来,最直接的办法就是使用解空间的语言习惯来进行思考. 对于编程语言的学习的步骤:1.学习编程语言的语法格式:2.学习工具的使用(库.命令):3.算法:4.数据结构 shell脚本编程: shell脚本的内容和格式:首行.绝对行首.sheb

Bash编程入门

一.编程语言分类 二.shell编程特性 三.bash配置文件profile&bashrc 四.面向对象和面向过程 一.编程语言分类: 1.编程语言分类:根据运行方式 编译运行:源代码-->编译器(编译)-->程序文件 运行速度快,但是拍错效率低 C语言:通过调用函数库,或者类库来完成 解释运行:源代码-->运行时启动解释器,由解释器边解释边运行 完全借助于外部的程序来完成 2.根据其编程过程功能的实现是调用库还是调用外部的程序文件: shell脚本编程 利用系统上的命令及编程组