linux shell中 if else以及大于、小于、等于逻辑表达式
在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 ]];thenrm -rf $DIR/$DIRNAMEecho "---------$DAY----($DIR)-----------------------" >> /tmp/img_cache.logecho "$DIRNAME Deleted successful" >> /tmp/img_cache.log
fi
参考链接:http://www.jb51.net/article/34332.htm
linux shell中 if else以及大于、小于、等于逻辑表达式相关推荐
- linux if else 格式,linux shell中 if else以及大于、小于、等于逻辑表达式
在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...
- linux shell中 if else以及大于、小于、等于逻辑表达式介绍
在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...
- linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法
一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...
- linux的shell的功能,linux shell中${ }的一些特异功能
linux shell中${ }的一些特异功能,这部分内容是shell中的比较经典的部分之一,建议认真学习,深刻体会. 假设我们定义一个变量为: file=/dir1/dir2/dir3/my.fil ...
- Linux shell 中的数组和关联数组
写在前面的话 我用开始废柴了,这个又是写给我自己看的了. 普通数组 1.数组的定义 在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯).定义数组的一 ...
- Linux Shell中的延时函数
Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下 sleep 和 usleep 的区 ...
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- Day25 linux shell中的特殊符号与命令
2019独角兽企业重金招聘Python工程师标准>>> linux shell中的特殊符号 *:代表零个或多个任意字符 ?:只代表一个任意字符,不管是数字还是字母,只要是一个字符,都 ...
- linux shell中./a.sh , sh a.sh , source a.sh, . ./a.sh的区别
在linux shell中, 执行shell script的方式有多种, 有什么区别呢? 现在用一个简单例子再来说下. a.sh的内容是: #! /bin/bash echo hello world ...
最新文章
- 用Scrapy爬虫框架爬取食品论坛数据并存入数据库
- 帝国备份语法错误问题
- CVPR2021 最佳论文候选—提高图像风格迁移的鲁棒性
- What Every Computer Programmer Should Know About Windows API, CRT, and the Standard C++ Library
- 设置DIV块元素在浏览器页面中垂直居中
- delphi xe 服务器发消息,Delphi XE IdTCPClient和IdTCPServer 发送和接收文件
- mac安装mysql出错_Mac 安装MySQL过程遇到的问题
- 中国多接收器电感耦合等离子体质谱仪市场行业产销需求与投资预测分析报告2022-2028年
- 最美证件照工作室需要买什么东西
- Oracle EBS R12关于“PO 通信输出”相关问题处理
- 京东云618年中大促开始啦!
- [ 电脑维修那些事 ] 一招教你自己解决电脑蓝屏
- JAVA 调用地图API
- 上位机与下位机交互--让socket不死
- 一分钟读懂广告投放各计费CPM、CPC等(公式推导干货)
- 国家-首都 {中-英文对照}
- 【c语言】一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,问该数是多少?
- 3dmax选中间隔面的步骤教程
- keil 5 : Error: L6218E: Undefined symbol 问题解决方法小记
- 进入空气稀薄地带,《朗读者》再现阿里云10年技术自主研发