Shell 编程之If 条件语句

Shell 编程之If 条件语句

  • if 表达式
  • If 判断括号区别
    • MySQL 数据库备份脚本
    • 下一篇接LAMP 一键自动化安装脚本

Linux Shell 编程中,if、for、while、case 等条件流程控制语句用的非常多,熟练掌握以上流程控制语句及语法的实验,对编写 Shel 脚本有非常大的益处。

if 表达式

If 条件判断语句,通常以 if 开头,fi 结尾。也可加入 else 或者 elif 进行多条件的判断,if 表达式如下:

if (表达式)
语句 1
else
语句 2
fi

If 语句 Shell 脚本编程案例

  1. 比较两个整数大小。
#!/bin/bash
#By author jfedu.net 2017
NUM=100
if (( $NUM > 4 )) ; then
echo “The Num $NUM more than 4.”
else
echo “The Num $NUM less than 4.”
fi
  1. 判断系统目录是否存在。
#!/bin/bash
#judge DIR or Files
#By author jfedu.net 2017
if [ ! -d /data/20140515 -a ! -d /tmp/2017/ ];then
mkdir -p /data/20140515
fi

If 常见判断逻辑运算符详解:

逻辑运算符 说明
-f 判断文件是否存在 eg: if [ -f filename ];
-d 判断目录是否存在 eg: if [ -d dir ];
-eq 等于,应用于整型比较 equal;
-ne 不等于,应用于整型比较 not equal;
-lt 小于,应用于整型比较 letter;
-gt 大于,应用于整型比较 greater;
-le 小于或等于,应用于整型比较;
-ge 大于或等于,应用于整型比较;
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式;
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式;
-z 空字符串;
|| 单方成立;
&& 双方都成立表达式。
  1. if 多个条件测试分数判断。
#!/bin/bash
#By author jfedu.net 2017
scores=$1
if [[ $scores -eq 100 ]]; then
echo "very good!";
elif [[ $scores -gt 85 ]]; then
echo "good!";
elif [[ $scores -gt 60 ]]; then
echo "pass!";
elif [[ $scores -lt 60 ]]; then
echo "no pass!"
fi

If 判断括号区别

在使用 if 语句时,经常会使用()、(())、[]、[[]]、{}等括号,如下为几种括号简单区别对比:

( )
用于多个命令组、命令替换、初始化数组;
(( ))
整数扩展、运算符、重定义变量值,算术运算比较;
[]
bash 内部命令,[test 是等同的,正则字符范围、引用数组元素编号,不支持+-*/
数学运算符,逻辑测试使用-a、-o。
[[ ]]
bash 程序语言的关键字,不是一个命令,[[ ]]结构比[ ]结构更加通用,不支持+-*/
数学运算符,逻辑测试使用&&||{
     }
主要用于命令集合或者范围,例如 mkdir -p /data/201{
     7,8}/

MySQL 数据库备份脚本

MySQL 数据库备份是运维工程师的工作之一,如下为自动备份 Mysql 数据库脚本。

#!/bin/bash
#auto backup mysql
#By author jfedu.net 2017
#Define PATH 定义变量
BAK_DIR=/data/backup/mysql/`date +%Y-%m-%d`
MYSQLDB=webapp
MYSQLPW=backup
MYSQLUSR=backup
#must use root user run scripts 必须使用 root 用户运行,$UID 为系统变量
if
[ $UID -ne 0 ];then
echo This script must use the root user ! ! !
sleep 2
exit 0
fi
#Define DIR and mkdir DIR 判断目录是否存在,不存在则新建
if
[ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
fi
#Use mysqldump backup Databases
/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW -d $MYSQLDB >$BAKDIR/webapp_db.sql
echo "The mysql backup successfully "

下一篇接LAMP 一键自动化安装脚本

链接地址

你可能感兴趣的:(shell,shell)