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

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

5年前 (2019-09-08)linux基础564
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用户的基本操作

Linux用户的基本操作

用户基本概述1.什么是用户?用户指的是能够正常登录Linux或Windows系统2.Linux下的用户有什么用?2.1.系统上的每一个进程(运行的程序),都需要一个特定的用户运行2.2.通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障。2.3.每一个文件都有特定的用户拥有,所以...

Linux基本权限

Linux基本权限

1.什么是权限我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权力。2.为什么要有权限因为系统中不可能只存在一个root用户,一定会存在多个用户,为了保护每个登陆用户的隐私和工作环...

CentOS7系统服务

1:Linux运行级别1.1.运行级别就是操作系统当前正在运行的功能级别System V init运行级别systemd目标名称作用0runlevel0.target, poweroff.target关机1runlevel1.target, rescue.target单用户模式2runlevel2....

sersync实时同步

sersync实时同步

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

Linux文件管理-压缩打包

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