3-Shell分支语句

Shell 分支语句

单分支if

语法:

if 条件测试; then

命令序列

fi

注:条件测试可以是判断语句也可以是任何有返回值的命令(执行成功—返回0—假)

实例:

  • 输入用户名和密码新建用户

    #!/bin/bash
    read -p "请输入用户名:" user
    read -p "请输入密码:" pass
    if [[ ! -z "$user" && ! -z "$pass" ]]; then
        useradd "$user"
        echo "$pass" | passwd --stdin "$user"
    fi
    
  • 脚本自动测试

    #!/bin/bash
    if ! mkdir "/media/cdrom"; then
        echo "failed to create cdrom directory"
    fi
    if ! yum -y -q install ABC; then
        echo "failed to install ABC"
    fi
    
  • 判断服务状态:启动、关闭、自启动

    #!/bin/bash
    if [ -z $1 ]; then
        echo "错误:未输入服务名称"
        echo "用法:脚本名 服务名"
        exit        #退出脚本
    fi
    if systemctl is-active $1 &>/dev/null ; then
        echo "$1 已经启动"
    else
        echo "$1 未启动"
    fi
    if systemctl is-enabled $1 &>/dev/null ; then
        echo "$1 是开机自动启动"
    else
        echo "$1不是开机自动启动"
    fi
    
  • 配置VNC远程桌面访问服务端

    #!/bin/bash
    rpm --quiet -q tigervnc-server			#检查是否安装tigervnc-server
    if [[ $? -ne 0 ]]; then
        yum -y install tigervnc-server
    fi
    x0vncserver AcceptKeyEvents=0 AcceptPointerEvents=0 \
    AlwaysShared=1 SecurityTypes=None rfbport=5908
    

    AcceptPointerEvents:是否接受鼠标控制;0——禁止,1——允许

    AcceptKeyEvents:是否接受键盘控制;0——禁止,1——允许

    AlwaysShared:是否支持多人共享;0——禁止,1——支持

    SecurityType:是否需要输入密码;None——不需要,VncAuth——需要

    rfbport:远程桌面连接端口

    客户端:

    yum -y install tigervnc
    vncviewer server_ip:5908
    

双分支if

语法:

if 条件测试; then

命令序列1

else

命令序列2

fi

实例:

  • 判断主机是否可以ping通

    #!/bin/bash
    if [[ -z "$1" ]]; then
        echo -n "用法: 脚本"
        echo -e "\033[32m 域名或IP\033[0m"
        exit
    fi
    
    ping -c2 -i0.1 -W1 "$1" &>/dev/null
    if [[ $? -eq 0 ]]; then
        echo "$1 is up"
    else
        echo "$1 is down"
    fi
    

多分支if

语法:

if 条件测试1; then

命令序列1

elif 条件测试2; then

命令序列2

elif 条件测试3; then

命令序列3

else

命令序列n

fi

实例:

  • 猜数游戏

    #!/bin/bash
    clear
    num=$[RANDOM%10+1]
    read -p "请输入1~10之间的整数:" guess
    if [[ ${guess} -eq ${num} ]]; then
        echo "恭喜,猜对了!"
    elif [[ ${guess} -lt ${num} ]]; then
        echo "Oops, 猜小了"
    else
        echo "Oops, 猜大了"
    fi
    

多分支case

语法:

case value in

模式1|模式2|模式3)

命令序列1;;

模式4|模式5|模式6)

​ 命令序列1;;

*)

​ 命令序列n;;

esac

实例:

  • 字母比较

    #!/bin/bash
    read -p "请输入一个a~c之间的字母:" key
    case $key in
    a)
    	echo "I am a.";;
    b)
    	echo "I am b.";;
    c) 	
    	echo "I am c.";;
    
  • 通配符

    符号描述
    *匹配任意字符串
    匹配任意单个字符
    […]匹配括号中任意单个字符
    #!/bin/bash
    read -p "请输入任意字符:" key
    case $key in
    [a-z])
    	echo "小写字母";;
    [A-Z])
    	echo "大写字母";;
    [0-9])
    	echo "数字";;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值