当前位置:首页 > linux基础 > 正文内容

Shell介绍(三)if判断,case控制,for循环,while循环,流程控制语句

6年前 (2019-09-08)linux基础695
if判断


单分支

if [你有房]
then
    我就嫁给你
fi
多分支
if [ 你有房 ]
then
    我就嫁给你
else
    拜拜
fi
if [ 你有房 ]
then
    我就嫁给你
elif [ 你有钱 ]
then
    我也嫁给你
elif [ 你爸是李刚 ]
then
    我也嫁给你
elif [ 活好!运维技术好 ]
then
    我倒贴也嫁给你
else
    拜拜
fi
单分支  一个条件  一个结果
双分支  一个条件  两个结果
多分支  多个条件  多个结果


案例: 根据操作系统不同的版本安装不同的源

1. 如何取出版本号
2. 如何做版本号的比对
3. 比对完成执行相对应的安装源
[root@web scripts]# cat yum.sh 
#!/bin/sh
ve=`cat /etc/redhat-release |awk '{print $(NF-1)}'`
#centos6.x使用以上命令获取不到版本号
if [ ${ve%%.*} -eq 7 ]
then
    #判断网络是否通畅ping 如果不通 则重启systemctl restart network 通继续执行
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    #测试wget是否已安装 无安装先安装wget
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
elif [ ${ve%%.*} -eq 6 ]
then
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
fi
case 流程控制语句
case 变量名4 in
    模式匹配1)
        命令的集合
            ;;
    模式匹配2)
        命令的集合
            ;;
模式匹配3)
         命令的集合
            ;;
*)####*的下一行不需要有;;
echo USAGE[$0 1|2|3]
esac


案例:系统菜单

[root@web scripts]# cat menu.sh
#!/bin/sh
echo -e"\t\t#########################"
echo -e"\t\t#\t1.系统负载\t#"
echo -e"\t\t#\t2.磁盘使用率\t#"
echo -e"\t\t#\t3.内存使用率\t#"
echo -e"\t\t#\t4.当前登录用户\t#"
echo -e"\t\t#\t5.当前eth0的IP\t#"
echo -e"\t\t#\t6.显示菜单\t#"
echo -e"\t\t#########################"
menu(){
cat<<EOF
    1.u 系统负载
    2.d 磁盘使用率
    3.f 内存使用率
    4.w 当前登录用户
    5.ip 当前eth0的IP
    6.h 显示帮助(菜单)
    7.q 退出
EOF
}
menu
while true
do
read -p "请输入你想要查看的系统信息的编号: " num
case $num in
   1|u)
        uptime
        ;;
  
     2|d)
        df -h
        ;;
   3|f)
        free -h
        ;;
   4|w)
        w
       ;;
   5|ip)
       ip add
       ;;
   6|h)
        clear
        menu
        ;;
   7|q)
      exit
      ;;
   *)
        menu
esac
done


for循环

for 变量名 in [取值列表] 苹果 香蕉 梨 桃子 西瓜  字符串 数字{}序列  命令
do
  命令体
  echo 呵呵
done


案例: 使用for循环创建用户

[root@web scripts]# cat for1.sh
#!/bin/sh
for i in `cat user.txt`
do
    useradd $i
done


使用for循环 从1加到100  结果5050

for i in `seq 100`
do
    sum=$[sum+i]
done
echo $sum


while循环

while [ 条件表达式 ]
do
    命令
done


案例: 1加到100

#!/bin/sh
i=0
while [ $i -le 100 ]
do
    sum=$[i+sum]
    let i++
done
echo $sum


流程控制语句 exit continue break


exit   退出整个脚本 不会继续执行

break 跳出本次循环 继续往下执行 跳出循环体
continue 结束当前此次的命令,继续下一次循环
[root@web scripts]# cat exit.sh break.sh continue.sh 
#!/bin/sh
while true
do
    echo ok
    exit
    echo hehe
done
echo done......


#!/bin/sh
while true
do
    echo ok
    break 
    echo hehe
done
echo done......

#!/bin/sh
while true
do
    echo ok
    continue
    echo hehe
done
echo done......


案例2:

#!/bin/sh
for i in `seq 10`
do
    user=oldboy$i
    id $user &>/dev/null
    if [ $? -ne 0 ];then
       useradd $user
       [ $? -eq 0 ] && echo "$user create is ok"
    else
        break
    fi
done
echo hehe.......


#!/bin/sh
for i in `seq 10`
do
    user=oldboy$i
    id $user &>/dev/null
    if [ $? -ne 0 ];then
       useradd $user
       [ $? -eq 0 ] && echo "$user create is ok"
else
        continue
fi
done
echo hehe.......


“Shell介绍(三)if判断,case控制,for循环,while循环,流程控制语句” 的相关文章

Linux-yum软件管理

Linux-yum软件管理

YUM基本介绍1.什么是YUMYum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。2.YUM源是什么1要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的reposito...

sersync实时同步

sersync实时同步

实时同步概述实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。保证数据的连续性, 减少人力维护成本,解决nfs单点故障实时同步工具选择sersync+rsync(√)、inotify+rsyncInotify是一个通知接口,用来监控文件系统的各种变化,如果...

NFS文件共享存储

NFS文件共享存储

NFS基本概述NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分...

Linux文件管理-压缩打包

压缩打包介绍windows下我们接触最多的压缩文件就是.rar格式, 但Linux有自己所特有的压缩工具。如果希望windows和Linux互相能使用的压缩工具, 建议.zip格式压缩的好处主要有:1、节省磁盘空间占用率2、节省网络传输带宽消耗3、网络传输更加快捷Linux系统常见的压缩包有哪些类型...

Shell介绍(一)变量、传参、数值运算

Shell编程1.什么情况下使用Shell1:安装CentOS系统 自动化安装操作系统(kickstart cobbler) 底层shell2:网络IP地址3:初始化操作系统(ntp时间同步,更改默认YUM源,SSH端口,SSH远程连接禁止DNS解析,禁止root登录,关闭seilnux,防火墙优化...

Shell介绍(四)条件表达式,字符串比对

条件表达式[ ]======test   []常用[ -f file ] 文件是否存在 且为普通文件 重点[ -e file ] 文件存在则为真[ -d file ] 目录存在则为真 重点[ -x file ] 文件有执行权限则为真[ -w file ] 文件可写则为真[...