1、if 单分支语句
if [ 条件语句 ]
then
条件操作
fi
例子:
[root@localhost ~]# if [ 1 -eq 0 ] //如果1等于0
> then
> echo "正确" //输出正确
> else
> echo "错误" //输出错误
> fi //fi结束语句
错误
rpm -q vsftpd //查询vsftpd软件是否存在
if [ $? -eq 1 ] //如果echo $?等于1
then
yum -y install vsftpd //安装vsftd
fi
mount_DVD="/media/cdrom" //定义变量mount_DVD将/media/cdrom赋值给mount_DVD
if [ ! -d $mount_DVD ] //如果mount_DVD不是目录
then
mkdir -p $mount_DVD //创建/media/cdrom
fi //fi结束语句
=======================================================================
if多分支语句
if [ 条件语句 ]
then
条件操作
else
条件操作
fi
if [ -d /slp ] //如果/slp目录存在
then
echo "目录已存在" //输出目录已存在
else
mkdir /slp //创建/slp目录
fi
=========================================================
(4)逻辑测试
1>格式:
[ 表达式 1 ] 操作符 [ 表达式 2 ] …
命令 1 操作符 命令 2 …
2>常用的测试操作符:
-a 或&&:逻辑与,“而且”的意思
-o 或||:逻辑或,“或者”的意思
!:逻辑否
3、if 多分支语句结构
if [ 条件语句 ]
then
条件操作
elif [ 条件语句]
then
条件操作
else
条件操作
fi
read -p "请输入您的成绩(0-100):" fs
if [ $fs -ge 0 -a $fs -lt 60 ]
then
echo "$fs ,不合格"
elif [ $fs -ge 60 -a $fs -lt 70 ]
then
echo "$fs,合格"
elif [ $fs -ge 70 -a $fs -lt 85 ]
then
echo "$fs,良好"
elif [ $fs -ge 85 -a $fs -le 100 ]
then
echo "$fs,优秀"
else
echo "分数无效"
fi
=================================================
实例:Shell脚本部署YUM仓库服务
服务端运行脚本:
[root@localhost ~]# vim yumftp.sh
mount /dev/sr0 /media/cdrom &>/dev/null if [ $? -eq 0 ] then [ -d $DIR ] || mkdir -p $DIR echo "正在从光盘拷贝数据到本地,请耐心等待" cp -rf /media/cdrom/* $DIR echo "$DIR 内容已拷贝完成!" else echo "请先放入centos7的光盘" exit fi echo "安装并启动vsftpd服务" read -p "请输入本机提供的ftp服务器ip地址:" IP rpm -qa | grep vsftpd &>/dev/null [ $? -ne 0 ] && rpm -i /media/cdrom/Packages/vsftpd-* &>/dev/null /etc/init.d/vsftpd start &>/dev/null &&chconfig on && echo "ftp服务已经开启" echo "设置本地yum源并建立缓存" mkdir -p $DIR/bak &>/dev/null mv $DIR2/* $DIR/bak &>/dev/null echo -e "[ftp]\nname=centos7\nbaseurl=ftp://192.168.200.115/centos7\ngpgcheck=0\nenabled=1" > $DIR2/ftp.repo yum clean all &> /dev/null yum makecache &>/dev/null echo "ftp源的yum仓库已建立"
客户端运行脚本:
[root@ns2 ~]# vim clientyumftp.sh
#!/bin/bash DIR2=/etc/yum.repos.d/ read -p "请输入ftp服务器的ip地址:" IP ping -c 2 -i 0.1 -W 2 $IP &>/dev/null if [ $? -eq 0 ] then mkdir -p $DIR2/bak &>/dev/null mv $DIR2/* $DIR2/bak &>/dev/null echo -e "[ftp]\nname=centos7\nbaseurl=ftp://192.168.200.115/centos7\ngpgcheck=0\nenabled=1" > $DIR2/ftp.repo yum clean all &>/dev/null yum makecache &>/dev/null echo "ftp源yum仓库已建立" else echo "ftp服务器链接失败" fi
服务端测试:
[root@localhost ~]# ./yumftp.sh 挂载光盘。将光盘内容复制到本地/var/ftp/centos7目录下 正在读取光盘 正在从光盘拷贝数据到本地,请耐心等待 /var/ftp/centos7 内容已拷贝完成! 安装并启动vsftpd服务 请输入本机提供的ftp服务器ip地址:192.168.200.115 设置本地yum源并建立缓存 ftp源的yum仓库已建立
客户端测试:
[root@ns2 ~]# vim clientyumftp.sh
[root@ns2 ~]# ./clientyumftp.sh 请输入ftp服务器的ip地址:192.168.200.115 ftp源yum仓库已建立
[root@ns2 ~]# scp 192.168.200.115:root/cli* ./
The authenticity of host '192.168.200.115 (192.168.200.115)' can't be established.
ECDSA key fingerprint is SHA256:WhmwOa3kotMQL6wth0B3Q/nBCAytuC2kBCTpEA4GJoQ.
ECDSA key fingerprint is MD5:b4:3d:85:4d:b0:66:16:f2:7b:3e:fb:50:d7:0e:b4:0f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.200.115' (ECDSA) to the list of known hosts.
root@192.168.200.115's password:
scp: root/cli*: No such file or directory
[root@ns2 ~]# ls
anaconda-ks.cfg clientyumftp.sh initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@ns2 ~]# ./clientyumftp.sh
请输入ftp服务器的ip地址:192.168.11.11
ftp服务器链接失败
[root@ns2 ~]# ./clientyumftp.sh
请输入ftp服务器的ip地址:192.168.200.115
ftp源yum仓库已建立