[转帖]linux shell中 if else以及大于、小于、等于逻辑表达式介绍

linux,shell,if,else,以及,大于,小于,等于,逻辑,表达式,介绍 · 浏览次数 : 0

小编点评

**脚本中常用条件命令选项有:** - `-eq`:比较两个参数是否相等 - `-ne`:比较两个参数是否不相等 - `-lt`:参数1是否小于参数2 - `-le`:参数1是否小于等于参数2 - `-gt`:参数1是否大于参数2 - `-ge`:参数1是否大于等于参数2 - `-f`:检查文件是否存在 **举例:** **1、判断文件是否存在** ```bash if [ -f "access_$YACCESS.log.tgz" ]; then echo "OK" else echo "error $FILE" fi ``` **2、清除相关文件,并按时间段记录日志** ```bash 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 ```

正文

https://www.jb51.net/article/34332.htm

 

 
在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友
 

比如比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。

注意:这里的空格很重要。要确保方括号的空格。笔者就曾因为空格缺少或位置不对,而浪费好多宝贵的时间。

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、判断文件是否存在

 

复制代码代码如下:

#!/bin/sh
# 判断文件是否存在
# 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

 

 

复制代码代码如下:

#!/bin/sh
# 清除相关文件,并按时间段记录日志
# 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

与[转帖]linux shell中 if else以及大于、小于、等于逻辑表达式介绍相似的内容:

[转帖]linux shell中 if else以及大于、小于、等于逻辑表达式介绍

https://www.jb51.net/article/34332.htm 在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。注意:这里的空格很重要。要确保方

[转帖]linux shell 中数组的定义和for循环遍历的方法

https://www.cnblogs.com/ysk123/p/11510718.html linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用空格分开。数组的下标从0开始。 1 获取下标为n的元素: variable[n] 而且不存在数组下标

[转帖]Linux中最全shell命令&常用注意事项

在编辑linux脚本中不断的会用到复杂的脚本编辑,写文章记录。 Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 目录 推荐书籍: Linux常用命令 Linux 常用命令 在linux shell脚本中root切换到普通用户执行脚本 Linux—shell中$(( ))、$(

[转帖]linux中Shell日期转为时间戳的方法

http://www.nndssk.com/xtwt/169617hFPRvq.html shell中获取时间戳的方式为:date -d “$currentTime” +%s $ date -d @1337743485671 "+%c"Sun 28 May 44361 12:41:11 PM CST

[转帖]linux-shell-命令替换和变量替换

https://www.muzhuangnet.com/show/84054.html 本文摘自PHP中文网,作者步履不停,侵删。 命令替换$() `` 1 Shell 命令替换是指将命令的输出结果赋值给某个变量 Shell 中有两种方式可以完成命令替换,一种是反引号 ,一种是$(),使用方法如下:

[转帖]linux-shell总结(没事一看)

https://blog.51cto.com/wangaimin/1895607 !脚本执行与调试 1、绝对路径执行,要求文件有执行权限 2、以sh命令执行,不要求文件有执行权限 3、.加空格或source命令执行,脚本将在当前shell中执行 4、检查脚本语法 bash -v test.sh 5、

[转帖]Linux Shell:date日期时间操作

https://www.jianshu.com/p/cc9ebb212a8e 整理Linux Shell脚本中常用的日期操作,给予date命令,主要用法总结 获得当前日期,时间戳,date,date '+%s' 日期解析(字符串转日期,时间戳转日期)date -d 日期格式化输出,date '+%'

[转帖]Linux 学习笔记: shell中${} 的用法,删除&替换

Linux 学习笔记: shell中${} 的用法,删除&替换 字符串的删除 echo${i##*/} 删除 / 前的所有内容 ## 删除 tt=$i echo{tt:22} #取的22位以后的所有字符 file=/dir1/dir2/dir3/my.file.txt ${file#/}:删掉第一个

[转帖]Linux平台shell脚本输入密码,不显示明文

需求:shell脚本中输入密码,要求不显示明文,需要将其转换为“*”星号,或者不显示 实现方案:有两种实现方案,一是通过stty命令来实现,二是直接使用read来实现 方案一:使用stty来实现 使用stty -echo可以实现不显示密码,就像登录Linux系统输入密码时一样,stty的代码如下:

[转帖]Linux中执行shell脚本的4种方法总结

https://www.jb51.net/article/53924.htm 这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下 bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件