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

阅读次数:1427 次  |  发布时间:2019-02-04T00:00:00Z 

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

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

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命令选项在执行某一文件之前检查它是否存在。 下面以判断文件是否存在举个例子,以方便大家的理解。

#!/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
    mail -s "$FILE backup fail" test123@jb51.net <error.log
fi

最近发布的代码:

移除所有已停止的DOCKER Shell 程序  |  12次阅读  | 发布于:2020-08-08T12:58:23Z
使用ffmpeg命令行:删除音频中静音的部分 Shell 程序  |  5次阅读  | 发布于:2020-08-01T23:03:45Z
install_kibana Shell 程序  |  13次阅读  | 发布于:2020-07-29T23:50:28Z
install_logstash Shell 程序  |  14次阅读  | 发布于:2020-07-29T23:50:28Z
install_maven Shell 程序  |  16次阅读  | 发布于:2020-07-29T23:50:28Z
install_tomcat Shell 程序  |  15次阅读  | 发布于:2020-07-29T23:50:28Z
install_zookeeper Shell 程序  |  13次阅读  | 发布于:2020-07-29T23:50:28Z
删除用户脚本 Shell 程序  |  17次阅读  | 发布于:2020-07-29T23:50:28Z
查看磁盘目录使用情况 Shell 程序  |  11次阅读  | 发布于:2020-07-29T23:50:28Z
自动化下载脚本 Shell 程序  |  21次阅读  | 发布于:2020-07-29T23:50:28Z
Sys_Check Shell 程序  |  12次阅读  | 发布于:2020-07-29T23:50:27Z
black_list Shell 程序  |  14次阅读  | 发布于:2020-07-29T23:50:27Z
check_mysql_ms Shell 程序  |  12次阅读  | 发布于:2020-07-29T23:50:27Z
install_elasticserch Shell 程序  |  11次阅读  | 发布于:2020-07-29T23:50:27Z
install_filebeat Shell 程序  |  7次阅读  | 发布于:2020-07-29T23:50:27Z
install_git Shell 程序  |  11次阅读  | 发布于:2020-07-29T23:50:27Z
install_grafana Shell 程序  |  14次阅读  | 发布于:2020-07-29T23:50:27Z
install_kafka Shell 程序  |  9次阅读  | 发布于:2020-07-29T23:50:27Z
默认退出状态码 Shell 程序  |  10次阅读  | 发布于:2020-07-29T23:50:26Z
Autoback-xtraback Shell 程序  |  12次阅读  | 发布于:2020-07-29T23:50:26Z
Autoinstall_ELK_V1.3 Shell 程序  |  9次阅读  | 发布于:2020-07-29T23:50:26Z
Cpu_Limit Shell 程序  |  7次阅读  | 发布于:2020-07-29T23:50:26Z
Custom_Rm Shell 程序  |  8次阅读  | 发布于:2020-07-29T23:50:26Z
Daily_Archive Shell 程序  |  11次阅读  | 发布于:2020-07-29T23:50:26Z
Hourly_Archive Shell 程序  |  8次阅读  | 发布于:2020-07-29T23:50:26Z
IP_iptables Shell 程序  |  12次阅读  | 发布于:2020-07-29T23:50:26Z
使用局部变量 Shell 程序  |  11次阅读  | 发布于:2020-07-29T23:50:25Z
使用库函数 Shell 程序  |  9次阅读  | 发布于:2020-07-29T23:50:25Z
全局变量 Shell 程序  |  7次阅读  | 发布于:2020-07-29T23:50:25Z
在函数中使用参数 Shell 程序  |  9次阅读  | 发布于:2020-07-29T23:50:25Z

最多阅读的代码

 SSH 登录失败:Host key verification failed Shell 程序  |  2466次阅读
 让你成为最历害的git提交人 Shell 程序  |  1647次阅读
 wget使用技巧 Shell 程序  |  1550次阅读
 切换到后台执行的shell命令 Shell 程序  |  1325次阅读
 查询当前网段内,那些IP被使用了 Shell 程序  |  1283次阅读
 使用shell统计代码行数 Shell 程序  |  1261次阅读
 使用Shell获取当前时间 Shell 程序  |  1216次阅读
 判断管理员 Shell 程序  |  1130次阅读
 unzip和zip指令的使用方法 Shell 程序  |  1035次阅读
 Shell按行读取文件 Shell 程序  |  916次阅读
 Shell 获取当前正在执行脚本的绝对路径 Shell 程序  |  901次阅读
 Shell的For循环的几种写法 Shell 程序  |  861次阅读
 读取Linux系统的CPU信息 Shell 程序  |  821次阅读
 字符界面加减乘除计算器 Shell 程序  |  818次阅读
 Linux下枚举所有的用户信息 Shell 程序  |  784次阅读
 找出目录中最大的文件 Shell 程序  |  725次阅读
 提取用户的账号信息 Shell 程序  |  688次阅读
 Bash Shell的文件格式 Shell 程序  |  666次阅读
 使用Shell文件判断文件或目录 Shell 程序  |  661次阅读
 shell 提取文件名和目录名 Shell 程序  |  577次阅读
 在shell中将"\n"以换行的方式输出 Shell 程序  |  495次阅读
 shell/查看Linux的磁盘大小 Shell 程序  |  407次阅读
 检查shell文件是否运行在自己的目录下 Shell 程序  |  389次阅读
 根据进程名Kill指定进程 Shell 程序  |  345次阅读
 枚举目录下的文件 Shell 程序  |  330次阅读
 枚举数组 Shell 程序  |  327次阅读