大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
if ....; then
....
elif ....; then
....
else
....
fi
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
#########################################################
含条件选择的shell脚本 对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。基本的if条件命令选项有: - eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。 ##################################################################
判断文件是否存在
#!/bin/sh
YACCESS=`date -d yesterday +%Y%m%d`
FILE="access_$YACCESS.log.tgz"
cd /data/nginx/logs
if [ -f "$FILE" ];then
echo "OK"
else
echo "error $FILE" > error.log
mail -s "$FILE backup fail" xxxx@yyyy.com <error.log
fi
###############
#!/bin/sh
#
DIR=/data/img_cache
DAY=`date +"%Y-%m-%d %H:%M"`
NUM=`ls $DIR |wc -l`
DIRNAME=`ls $DIR| grep leveldb | head -n 1 | awk '{print $NF}'`
if [[ $NUM -gt 3 ]];then
rm -rf $DIR/$DIRNAME
echo "---------$DAY----($DIR)-----------------------" >> /tmp/img_cache.log
echo "$DIRNAME Deleted successful" >> /tmp/img_cache.log
fi
补充:文件测试操作:
返回true,如果:
-e 文件存在
-a 文件存在(已被弃用)
-f 被测文件是一个regular文件(正常文件,非目录或设备)
-s 文件长度不为0
-d 被测对象是目录
-b 被测对象是块设备
-c 被测对象是字符设备
-p 被测对象是管道
-h 被测文件是符号连接
-L 被测文件是符号连接
-S(大写) 被测文件是一个socket
-t 关联到一个终端设备的文件描述符。用来检测脚本的stdin[-t0]或[-t1]是一个终端
-r 文件具有读权限,针对运行脚本的用户
-w 文件具有写权限,针对运行脚本的用户
-x 文件具有执行权限,针对运行脚本的用户
-u set-user-id(suid)标志到文件,即普通用户可以使用的root权限文件,通过chmod +s file实现
-k 设置粘贴位
-O 运行脚本的用户是文件的所有者
-G 文件的group-id和运行脚本的用户相同
-N 从文件最后被阅读到现在,是否被修改
f1 -nt f2 文件f1是否比f2新
f1 -ot f2 文件f1是否比f2旧
f1 -ef f2 文件f1和f2是否硬连接到同一个文件
二元比较操作符,比较变量或比较数字
整数比较:
-eq 等于 if [ "$a" -eq "$b" ]
-ne 不等于 if [ "$a" -ne "$b" ]
-gt 大于 if [ "$a" -gt "$b" ]
-ge 大于等于 if [ "$a" -ge "$b" ]
-lt 小于 if [ "$a" -lt "$b" ]
-le 小于等于 if [ "$a" -le "$b" ]
< 小于(需要双括号) (( "$a" < "$b" ))
<= 小于等于(...) (( "$a" <= "$b" ))
> 大于(...) (( "$a" > "$b" ))
>= 大于等于(...) (( "$a" >= "$b" ))
字符串比较:
= 等于 if [ "$a" = "$b" ]
== 与=等价
!= 不等于 if [ "$a" = "$b" ]
< 小于,在ASCII字母中的顺序:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ] #需要对<进行转义
> 大于
-z 字符串为null,即长度为0
-n 字符串不为null,即长度不为0
相关推荐
### Linux Shell中的if else以及大于、小于、等于逻辑表达式介绍 #### 一、概述 在Linux Shell编程中,为了实现程序的逻辑控制与决策处理,`if...else`语句是不可或缺的一部分。通过结合逻辑表达式的使用,可以有效...
2. **条件分支**:条件分支是程序控制流程的关键部分,使用`if`,`elif`(else if)和`else`关键字实现。例如,“17 判断闰年.py”可能包含了使用条件语句来确定给定年份是否为闰年的代码。闰年的条件通常为:能被4...
Python 逻辑表达式是编程中不可或缺的一部分,它们用于在代码中进行条件判断,决定程序的执行路径。Python 支持多种类型的逻辑运算符和比较运算符,这些表达式在编写控制流语句(如 if、else 和 while)时起到关键...
3. **关系运算符**:用于比较两个值,包括小于(`)、大于(`>`)、等于(`==`)、不等于(`!=`)、小于等于(`)、大于等于(`>=`)。例如,`int x = 10, y = 20; boolean isLess = x ;` 表示比较x是否小于y,并将布尔值结果赋...
我们使用了逻辑运算符`and`来确保当前的数同时小于等于另一个数且大于等于第三个数,这样就能找出中间值。 如果输入的三个数相等,那么任何数都是中间数,程序会正确地输出其中的一个。这个程序展示了如何利用`if.....
在IF-ELSE条件语句中,"条件运算符"通常是等于、不等于、大于、小于等比较操作符,"条件表达式"是需要判断的表达式,"布尔常量true"代表条件成立,"结果标识符"用来保存判断结果。根据这个结果,编译器会生成跳转四...
逻辑表达式是编程中的基本概念之一,用于表示真假值的判断。在C++中,常见的逻辑运算符包括: - `==`(等于) - `!=`(不等于) - `(小于) - `>`(大于) - `(小于等于) - `>=`(大于等于) #### 1.2 条件分支 ...
在Python编程语言中,`if-else`语句用于条件判断,它允许我们在满足特定条件时执行一段代码,否则执行另一段代码。然而,为了使代码看起来更...对于复杂的逻辑,建议使用标准的多行`if-else`结构,以提高代码的清晰度。
通过比较一个整数是否大于等于10且小于等于99来确定其是否为两位数。 7. 收集瓶盖赢大奖:需要判断两个条件,即是否拥有足够数量的特定瓶盖,通过逻辑与操作符`&&`来判断这两个条件是否同时满足,以决定是否可以...
根据给定文件的信息,我们可以总结出一系列与正则表达式相关的知识点,这些知识点主要围绕不同类型的输入限制展开,包括但不限于数字、字母、汉字以及其他特定字符的处理方式。 ### 一、仅允许输入非数字 在文件中...
print("num1 小于或等于 num2") ``` 此外,Python还提供了`elif`(else if)关键字,允许在同一个`if`结构中检查多个条件。这使得我们可以处理更复杂的逻辑,而无需嵌套多层`if`语句。一个包含`elif`的示例: ```...
Java 中的布尔表达式和 if-else 语句是非常重要的编程概念,本节将详细介绍布尔数据类型、if-else 语句、关系运算符、逻辑运算符、De Morgan’s Laws、短路运算符号、嵌套 if-else 语句、if-else-if 序列、switch ...
本章主要介绍了关系运算符、逻辑运算符以及它们在构建逻辑表达式中的应用,最后讲解了if语句的使用。 首先,关系运算符用于比较两个操作数,共有六种:小于(),小于或等于(),大于(>),大于或等于(>=),等于(=...
Python是一种高级编程语言,以其...通过熟练掌握三元表达式、for循环的if条件和else子句,你可以更好地控制程序的逻辑和数据处理,从而提升编程效率。对于初学者来说,理解并熟练运用这些概念是学习Python的关键步骤。
本课程主要关注如何理解和运用选择结构来解决实际问题,通过学习,学生将掌握逻辑量、关系表达式、逻辑表达式以及IF语句的使用。 1. 逻辑量的概念: 在QBASIC中,逻辑量通常用-1和0表示,分别代表真(True)和假...
print(str(num_a) + '大于等于' + str(num_b) if num_a >= num_b else str(num_a) + '小于' + str(num_b)) ``` 在这里,`if`后面的部分是条件,`num_a >= num_b`,如果条件为真,则执行`str(num_a) + '大于等于' + ...
Shell中的条件表达式支持多种运算符,如`-eq`(等于)、`-ne`(不等于)、`-gt`(大于)、`-lt`(小于)、`-ge`(大于或等于)、`-le`(小于或等于)。此外,还可以用`-z`检查字符串长度是否为零,`-n`检查字符串...
关系运算符包括`>`(大于)、`(小于)、`>=`(大于等于)、`(小于等于)以及`==`(等于)和`!=`(不等于)。这些运算符用于比较两个表达式,并返回一个布尔值(0或1)。例如,`a > b`将比较`a`和`b`,如果`a`大于`...
关系运算符有六种:<(小于)、(小于或等于)、>(大于)、>=(大于或等于)、==(等于)和!=(不等于)。关系运算符的优先级低于算术运算符,高于赋值运算符。 关系表达式是用关系运算符将两个表达式连接起来的式...