shell中 if else以及大于、小于、等于逻辑表达式介绍
比如比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。
注意:这里的空格很重要。要确保方括号的空格。笔者就曾因为空格缺少或位置不对,而浪费好多宝贵的时间。
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命令选项在执行某一文件之前检查它是否存在。
下面举二个例子吧,以方便大家的理解。
1、判断文件是否存在
代码如下:
# 判断文件是否存在
#
link:www.jb51.net
# date:2013/2/27
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" test123@jb51.net
<error.log
fi
代码如下:
# 清除相关文件,并按时间段记录日志
#
link:www.jb51.net
# date:2013/2/27
#
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
shell中 if else以及大于、小于、等于逻辑表达式介绍的更多相关文章
- shell的if else 以及大于,小于等逻辑表达式
if ....; then .... elif ....; then .... else .... fi 大多数情况下,可以使用测试命令来对条件进行测试.比如可以比较字符串.判断文件是否存在及是否可读 ...
- linux shell中 if else以及大于、小于、等于逻辑表达式
在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...
- linux shell中 if else以及大于、小于、等于逻辑表达式介绍
在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下, 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注 ...
- mybatis 的mapper配置文件sql语句中, 有时用到 大于, 小于等等
一, 用<![CDATA[ ]]>标识,例如: <if test="create_timeStart != null and create_timeStart != ' ...
- [shell] if else以及大于、小于、等于逻辑表达式 [转]
本文也即<Learning the bash Shell>3rd Edition的第五章Flow Control之读书笔记,但我们将不限于此.flow control是任何编程语言中很常用 ...
- oracle中时间格式时候的大于号是大于和等于的意思
oracle中时间格式时候的大于号是大于和等于的意思
- Mybatis在xml配置文件中处理SQL中的大于小于号的方法
之前在项目中遇到了在SQL中<=不识别的问题,在Navicat中语句正常,在xml中不识别,想起来就记录一下 项目用的是Mybatis,经过网上多次查询,验证,总结方法如下: 一.使用<! ...
- SHELL中的特殊变量和结构
SHELL中的特殊变量和结构 表格 B-1. 特殊的shell变量 变量 含义 $0 脚本名字 $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 $# 位置 ...
- shell中$(( )) 与 $( ) 还有${ }的区别
http://blog.chinaunix.net/uid-14351756-id-2820651.html $( ) 与 ` ` (反引号)在 bash shell 中,$( ) 与 ` ` (反引 ...
随机推荐
- 第一百零八节,JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式
JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式 学习要点: 1.Global对象 2.Math对象 ECMA-262对内置对象的定义是:"由ECMASc ...
- droidcon 北京2016安卓技术大会——安卓领域国际盛会
目前droidcon国际技术大会已成为安卓领域全球最有影响力.规模最大的技术大会,每年在世界各地举办,横跨四大洲,超过上万人次参加. droidcon国际技术大会于2009年由一个Android爱好者 ...
- (转)eclipse自动补全的设置
如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为ecl ...
- Hadoop之初体验
首先是来说一下这两天来自己的个人感受吧.我争取在第一段将情怀给逼逼完,大家可以无视这一段~~~真心是不容易,第一个感觉就是,乱.为啥呢?先说说我使用Hadoop的原因吧.选了云计算这门课,打算到时候深 ...
- delphi 集合的用法
http://blog.sina.com.cn/s/blog_9e2e8405010180jy.html delphi基础补充 1 开域语句 在面向对象的程序代码中,嵌套对象的现象十分 ...
- Cross Product
Cross Product These are two vectors: They can be multiplied using the "Cross Product" (als ...
- DOS 命令批量删除文件及相关批处理命令详解
del X:\*.* /f /s /q /a 递归强制静默删除X盘及其所有子目录下的所有文件 /f 表示强制删除文件 /s表示子目录都要删除该文件 /q表示无声,不提示 /a根据属性选择要删除的文件 ...
- javascript焦点图之垂直滚动
html代码布局,需要用到定位,不细说了 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- javascript动画效果之匀速运动(修订版)
在编写多块同时触发运动的时候,发现一个BUG, timer = setInterval(show, 30);本来show是一个自定义函数,当设为timer = setInterval(show(one ...
- 【Machine Learning in Action --3】决策树ID3算法预测隐形眼睛类型
本节讲解如何预测患者需要佩戴的隐形眼镜类型. 1.使用决策树预测隐形眼镜类型的一般流程 (1)收集数据:提供的文本文件(数据来源于UCI数据库) (2)准备数据:解析tab键分隔的数据行 (3)分析数 ...