1、流程控制过程

1)格式一

if [ 条件判断一 ] && (||) [ 条件判断二 ]; then
命令一
elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then
命令二 
else
执行其它
fi

2)格式二

if [条件判断一 -a (-o) 条件判断二 -a (-o) 条件判断三]; then
elif [条件判断三 -a (-o) 条件判断四 ]; then
else
执行其它
fi

3)格式三

if [[条件判断一 && (||) 条件判断二 ]]; then
elif [[ 条件判断三 && (||) 条件判断四 ]]; then
else
执行其它
fi

2shell实例

1)判断文件类型

[root@test shell]# cat file-check.sh 
#!/bin/bash
read -p "请输入一个文件名:" file #接收键盘输入并赋予变量 file。
if [ -z "$file" ] #判断 file 变量是否为空。
then
echo "请输入一个文件名" #如果为空,输出报错信息。
elif [ ! -e "$file" ] #判断 file 的值是否存在。
then
echo "你输入的文件不存在" #如果不存在,输出此信息。
elif [ -f "$file" ] #判断 file 的值是否为普通文件。
then
echo "$file 是一个普通文件" #如果是普通文件输出此信息。
elif [ -d "$file" ] #判断 file 是否是目录文件。
then
echo "$fiel是一个目录" #如果是目录文件输出此信息。
else #如果都不是则执行本程序。
echo "$file是其他文件" #都不是的话输出此信息。
fi
[root@test shell]# sh file-check.sh 
请输入文件名称:file-check.sh
file-check.sh 是一个普通文件
[root@test shell]#

2)判断学生成绩优劣

[root@test ~]# cat cj-check.sh 
#!/bin/bash
read -p "请输入考试成绩:" cj
if [ $cj -ge 0 ] && [ $cj -le 59 ];then
        echo "差"
elif [ $cj -ge 60 ] && [ $cj -le 70 ]; then
        echo "中"
elif [ $cj -ge 71 ] && [ $cj -le 85 ]; then
        echo "良"
elif [ $cj -ge 86 ] && [ $cj -le 100 ]; then
        echo "优"
else
        echo "成绩有效范围0-100"
fi
[root@test ~]# sh cj-check.sh 
请输入考试成绩:85    
良
[root@test ~]#

3)mysql备份

[root@test ~]# vim mysqlbak.sh
#!/bin/bash
baknamefile=`date +%Y-%m-%d`
bakdir=/mysqlbak
user=root
password=123
dbname=webdb
[ -e $bakdir ] || mkdir $bakdir
mysqldump -u$user -p$password --flush-logs $dbname >
$bakdir/${baknamefile}-webdb.sql
[root@test ~]# crontab -e
0 3 * * * /root/etcbak.sh 2>&1 > /dev/null

个人公众号:

shell study-8day--shell流程控制过程及实例_linux