内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

Linux shell的流程控制

2018-11-06 20:00 出处:清屏网 人气: 评论(0

单分支的if语句

例子

1、使用单分支的if条件语句来判断/home/huanyu/shell/zz文件是否存在,若存在就结束条件判断和整个Shell脚本,反之则去创建这个目录

#!/bin/bash
# 单分支IF语句
DIR="/home/huanyu/shell/zz"
if [ ! -e $DIR ]
then
        mkdir -p $DIR
fi

双分支if语句

例子

1、使用双分支的if条件语句来验证某台主机是否在线,然后根据返回值的结果,要么显示主机在线信息,要么显示主机不在线信息

#!/bin/bash
# 用双分支结构判断一个IP是否在线

ping -c 3 -i 0.2 -W 3 $1 &> /home/huanyu/shell/null
if [ $? -eq 0 ]
then
        echo "Host $1 is on-line."
else
        echo "Host $1 is off-line."
fi
  • 测试执行

if多分支结构

例子

1、使用多分支的if条件语句来判断用户输入的分数在哪个成绩区间内,然后输出如Excellent、Pass、Fail等提示信息

#!/bin/bash
# 多分支if语句进行分数评价
# 在Linux系统中,read是用来读取用户输入信息的命令,能够把接收到的用户输入信息赋值给后面的指定变量,-p参数用于向用户显示一定的提示信息。
read -p "Enter your score (0-100):" GRADE 
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
then
        echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then
        echo "$GRADE is Pass"
elif [ $GRADE -ge 0 ] && [ $GRADE -le 69 ]
then
        echo "$GRADE is Fail"
else
        echo "Error:$GRADE is invalid."
fi
  • 测试执行

for循环

例子

1、使用for循环语句从列表文件中读取多个用户名,然后为其逐一创建用户账户并设置密码

  • 先准备用户名称列表
  • 编写shell脚本
#!/bin/bash
# 通过for循环批量创建用户

read -p "Enter the Users Password:" PASSWD
for UNAME in `cat users.txt`
do
        id $UNAME &> /home/huanyu/shell/null  // 查看用户信息
        if [ $? -eq 0 ]
        then
                echo "Already exists"
        else
                useradd $UNAME &> /home/huanyu/shell/null   //添加用户操作
                echo "$PASSWD" | passwd --stdin  $UNAME &> /home/huanyu/shell/null    // 为用户设置密码
                if [ $? -eq 0 ]
                then
                        echo "$UNAME , Create success"
                else
                        echo "$UNAME , Create failure"
                fi
        fi
done
  • 测试执行
  • 普通用户是无法创建用户的
  • 注:Ubuntu下不支持 --stdin 指令
  • 用root用户执行脚本,虽然上面的不支持,但是也创建成功了

2、从文本中自动读取主机列表,然后自动逐个测试这些主机是否在线

  • 准备IP列表
  • 编写脚本
#!/bin/bash
# 用for循环检测IP列表是否在线

for IP in `cat ~/shell/ipadds.txt`
do
        ping -c 3 -i 0.2 -W 3 $IP >> ~/shell/null
        if [ $? -eq 0 ]
        then
                echo "$IP is on-line."
        else
                echo "$IP is off-line."
        fi
done
  • 测试执行

while 循环

例子

1、编写一个用来猜测数值大小的脚本

#!/bin/bash
# 用while循环做一个猜价格游戏

PRICE=$(expr $RANDOM % 1000)  // 随机生成一个数,并把它赋给PRICE
TIMES=0   //用来计算猜测的次数
echo "商品实际价格在0-999之间,猜猜看是多少?"
while true
do
read -p "请输入你猜测的价格数:" INT
let TIMES++
if [ $INT -eq $PRICE ]
then
        echo "恭喜你猜对了,实际价格是:$PRICE"
        echo "你总共猜了 $TIMES 次。"
        exit 0
elif [ $INT -gt $PRICE ]
then
        echo "太高了"
else
        echo "太低了"

fi
done
  • 测试执行

case 语句

例子

1、提示用户输入一个字符并将其赋值给变量KEY,然后根据变量KEY的值向用户显示其值是字母、数字还是其他字符

#!/bin/bash
# 通过case语句判断输入字符的类型

read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
        [a-z]|[A-Z])
                echo "你输入的是字母。"
                ;;
        [0-9])
                echo "你输入的是数字。"
                ;;
        *)
                echo "你输入的是 空格、功能键或是其他控制字符。"
esac
  • 测试执行
分享给小伙伴们:
本文标签: Linuxshell流程控制

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号