原文
http://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
相关推荐
- `-eq`, `-ne`, `-lt`, `-le`, `-gt`, `-ge`:比较两个整数是否相等、不等、小于、小于等于、大于、大于等于。 4. **字符串比较**: - `[[ string1 == string2 ]]`:字符串比较,支持模式匹配。 5. **逻辑...
在Linux shell中,`if`语句常用的条件测试包括文件测试和字符串测试以及算术比较。 **文件测试运算符**: - `-b`: 如果文件存在且是块设备文件,则返回真。 - `-c`: 如果文件存在且是字符设备文件,则返回真。 - `-...
在深入探讨Linux Shell中的逻辑运算符之前,我们首先需要对逻辑运算符的基本概念以及它们在Linux Shell环境下的应用有一个清晰的认识。逻辑运算符是编程语言和脚本语言中非常重要的一部分,尤其是在条件判断和流程...
=`(不等于)、`>`(大于)、`(小于)、`>=`(大于等于)、`(小于等于),以及`&&`(与)、`||`(或)。 4. **文件与目录操作**: - **路径处理**:`cd`改变目录,`pwd`显示当前工作目录。 - **文件操作**:`...
本文将深入探讨shell脚本中的条件判断和逻辑运算,以及它们在实际脚本编写中的应用。 首先,我们要理解shell脚本中的一个核心概念:命令的状态返回值。每个命令执行后都会返回一个状态码,成功执行通常是0,表示真...
1. **整数比较运算符**:如`-eq`(等于)、`-ne`(不等于)、`-lt`(小于)、`-gt`(大于)、`-le`(小于或等于)、`-ge`(大于或等于)。 2. **字符串运算符**:`=`(等于)、`!=`(不等于)、`-z`(字符串长度为0...
7. **测试命令**:`test`命令用于检查条件是否为真,支持各种比较操作,如`-eq`(等于),`-ne`(不等于),`-gt`(大于),`-ge`(大于等于),`-lt`(小于),`-le`(小于等于)等。 8. **字符串和文件测试**:...
在条件判断中,Shell支持以下逻辑运算符:`-eq`(等于)、`-ne`(不等于)、`-gt`(大于)、`-lt`(小于)、`-ge`(大于等于)、`-le`(小于等于)、`-o`(或)、`-a`(与)。 **十、正则表达式** 在Shell中,`[[`...
在Shell编程中,有算术运算符(如加减乘除)、逻辑运算符(与、或、非)以及比较运算符(等于、不等于、大于、小于等)。例如,`-eq` 用于判断两个数是否相等,`-gt` 判断是否大于,`-lt` 判断是否小于。此外,还有...
Linux的Shell编程是一种强大的工具,它允许用户通过脚本自动化一系列命令操作,提高工作效率。以下是一些关于Shell编程的关键知识点: 1. 条件测试 (`test` 命令): - `-e file`:检查文件是否存在。 - `-z ...
在Linux系统中,Shell编程是一种强大的工具,它允许用户编写包含一系列命令的文本文件,即Shell脚本,以便自动化执行重复性操作、批量事务处理、自动化运维任务以及定时任务执行。Shell脚本通过解释器来执行,其中`#...
比较表达式包括`-eq`(等于),`-ne`(不等于),`-gt`(大于),`-lt`(小于),`-le`(小于或等于),`-ge`(大于或等于),以及字符串比较如`-z`(空串)和`-n`(非空串)。 逻辑操作符包括`-a`(与,等同于`&&`...
fi`,支持`-eq`(等于)、`-ne`(不等于)、`-gt`(大于)、`-lt`(小于)、`-ge`(大于等于)、`-le`(小于等于)等比较运算符。 2. 循环语句: - `for var in items; do commands; done` - `while condition; ...
7. **逻辑运算符和比较运算符**:如`-eq`(等于),`-ne`(不等于),`-gt`(大于),`-lt`(小于),`-ge`(大于等于),`-le`(小于等于)等。 8. **脚本调试**:可以使用`set -x`开启命令行追踪,`set -v`显示...
1. 数值测试:`-eq`(等于),`-ne`(不等于),`-gt`(大于),`-ge`(大于等于),`-lt`(小于),`-le`(小于等于)。 2. 字符串测试:`=`, `!=`(字符串比较),`-z`(字符串长度为0),`-n`(字符串长度不为0)...
4. **逻辑运算符**:在`if`语句中,常用逻辑运算符有`-eq`(等于),`-ne`(不等于),`-gt`(大于),`-lt`(小于),`-ge`(大于或等于),`-le`(小于或等于)。例如,比较两个数值: ```bash num1=10 num2=20...
整数比较则允许我们比较两个整数,如`-gt`(大于)、`-ge`(大于等于)、`-eq`(等于)、`-lt`(小于)、`-le`(小于等于)和`-ne`(不等于)。字符串比较主要用于比较变量的值,如`==`和`!=`用于判断两个字符串是否...