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

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

4年前 (2019-09-08)linux基础318
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.每一个文件都有特定的用户拥有,所以...

crond计划任务

crond计划任务1.什么是crondcrond就是计划任务,类似于我们平时生活中的闹钟。定点执行。2.为什么要使用crondcrond主要是做一些周期性的任务,比如: 凌晨3点定时备份数据。比如:11点开启网站抢购接口,12点关闭网站抢购接口。3.计划任务主要分为以下两种使用情况:1.系统级别的定...

find文件查找

find查找find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。同时find命令是Linux下必须掌握的。find 命令的基本语法如下命令路径选项表达式动作find[path...][options][expression][action]...

Linux进程管理

Linux进程管理

进程概述1.当我们运行一个程序,那么我们将运行的程序叫进程。PS1: 当程序运行为进程后,系统会为该进程分配内存,以及进程运行的身份和权限。PS2: 在进程运行的过程中,系统会有各种指标来表示当前运行的状态。2.程序和进程的区别1.程序是数据和指令的集合,是一个静态的概念。比如/bin/ls、/bi...

CentOS7系统服务

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

Rsync文件同步

Rsync文件同步

Rsync基本概述rsync是一款开源、快速、多功能、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于Unix/linux/Windows等多种操作系统平台。Rsync简介rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有...