在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

# 判断文件是否存在

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

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

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

在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下, 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注 ...

shell的if else 以及大于,小于等逻辑表达式

if ....; then .... elif ....; then .... else .... fi 大多数情况下,可以使用测试命令来对条件进行测试.比如可以比较字符串.判断文件是否存在及是否可读 ...

linux Shell中常用的条件判断

linux Shell中常用的条件判断 -b file            若文件存在且是一个块特殊文件,则为真 -c file            若文件存在且是一个字符特殊文件,则为真 -d ...

linux shell 中的sleep命令

开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

理解 Linux shell 中的一个方言:2>&1

理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...

linux shell 中的位置变量

对于linux shell 中的位置变量,我一直以来都是吐不出来又咽不下去,每次看到都不懂,不懂了就去百度google,看完了又忘,真是慢性咽炎啊.现在认真想想也是,其实自己一直以来都没有好好学习过, ...

Linux shell中的一个问题 ${}带正则匹配的表达式

目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

Linux shell中的竖线(|)——…

linux if else 格式,linux shell中 if else以及大于、小于、等于逻辑表达式相关推荐

  1. 利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类

    利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类 find ./ -name ".DS_Store" -depth -exec rm {} \;  Mac 删除 ...

  2. Linux新建用户可以在shell中切换到该用户也能登录到图形桌面

    解决使用useradd testname,passwd testname命令确实创建了一个用户,可以在shell中切换到该用户.但不能登录到图形桌面的问题! 通过下面方法可以在Linux中新建用户,并 ...

  3. linux sed 正则提取字符串,Shell中使用grep、sed正则提取和替换字符串

    Linux中使用grep正则提取字符串 echo office365 | grep -P '\d+' -o find . -name "*.txt" | xargs grep -P ...

  4. linux去除字符串的空格符,Shell中去除字符串前后空格的方法

    经常碰到的场景,需要去除字符串中的前后的空格.在Shell中不像其他语言有strip()来处理,不过也是可以使用诸如awk等命令来处理. 下面是一个简单示例: [root@localhost ~]# ...

  5. linux时间与日期函数,Shell中关于时间和日期的函数总结

    shell下获取系统时间的方法直接调用系统变量 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 获取昨天时期:`date -d yesterd ...

  6. linux ftp显示进度条,Shell中复制大文件显示进度

    "世间最痛苦的事莫过于等待..." 在Shell下进行大文件的复制时,常常要耗很长世间,这是一个相当乏味的过程,在GUI程序中常常会显示进度条或者完成百分比,但在Shell中如何来 ...

  7. linux脚本批量加注释,shell中如何批量注释和取消注释

    shell中如何批量注释和取消注释,注释,行号,模式,批量,命令 shell中如何批量注释和取消注释 易采站长站,站长之家为您整理了shell中如何批量注释和取消注释的相关内容. #!/bin/bas ...

  8. linux 常用压缩格式,Linux常见压缩格式之压缩与解压

    Linux常见压缩格式之压缩与解压 zip格式 压缩:zip -r [目标文件名].zip [原文件/目录名] 解压:unzip [原文件名].zip 注:-r参数代表递归 # Extract arc ...

  9. linux 的基本命令格式,Linux学习之路(一)命令基本格式

    据统计Linxu里面能够识别的命令超过3000个,而我们常用的Linux基本命令在60个左右.常用命令是我们必须掌握的命令,需要我们多练习才能记住,最起码要敲3遍以上. 简单的把常用命令分为以下几大类 ...

最新文章

  1. * 执行多条更新的Sql语句
  2. Android_神奇的android:clipChildren属性
  3. 【STM32】SYSTEM文件夹介绍,delay,sys,usart
  4. 事物的级别_面试官问:MySQL锁与事物隔离级别你知道吗?
  5. 【Silverlight5矢量打印】如何用C#代码检测打印机和驱动是否支持PostScript
  6. QML笔记-QML基本数据类型的使用
  7. springmvc拦截器配置
  8. 【kafka】kafka 消费组 加入 离开 reblance 案例
  9. Python数据可视化的四种简易方法
  10. Apache Lucene 3.x推荐教程
  11. leetcode刷题日记-71. 简化路径
  12. 华为HG255D救砖小总结1----概述及相关硬件准备
  13. vb实现随机生成100个整数,将其中的奇数由大到小排序,偶数由小到大排序,找出其中所有素数并求和
  14. 判断一个数是否为质数(素数)的4种方法
  15. 锁(synchronized和Lock)
  16. 电赛 电容触摸串口屏
  17. 在Blender中使用代码控制人物模型的头部姿态 - 代码实践Dlib版本
  18. python人工智能入门纳米学位_最近看到udacity的纳米学位很火,号称学完可以找到工作了,这是真的吗?...
  19. 全栈学习日记001--穿过黑色12月,在2021年第二周的开始见到曙光,朝着光一直走下去吧
  20. 一个大二老学长的迷茫之路

热门文章

  1. php个税计算接口,拿走不谢:通过个税反算工资的公式(实用小工具)
  2. CTFHUB技能树之Web
  3. java 常量和变量 区别_Java常量和变量的区别是什么
  4. Qt读取三种文件,ini配置文件,JSON文件,和xml文件
  5. java多态 作用_关于Java三大特性之多态的总结
  6. 爬虫技术助推Nifty Gateway数字收藏品市场
  7. Audio: 虚拟环绕声技术
  8. snmp协议_电源商和UPS用户为什么要选择SNMP卡?
  9. javaweb文件上传下载
  10. gitlab jenkins