• shell基础之if语句


    Shell流程控制

    流程控制是改变程序运行顺序的指令。linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法

    if语句

    格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi

    1、单分支

    if 条件表达式; then

    命令

    fi

    2、双分支

    if 条件表达式; then

      命令

    else

      命令

    fi

    实例1判断crond进程是否正在运行

    -v:表示取反;-c:即count,取代通常的输出,显示行数

    1 #!/bin/bash
    2 NAME=crond
    3 NUM=$(ps aux |grep $NAME |grep -vc grep)
    4 if [ $NUM -eq 1 ];then
    5 echo "$NAME running."
    6 else
    7 echo "$NAME is not running!"
    8 fi
    View Code

    实例2:检查主机是否在线

    -c:表示发送几次包;-w:表示等待时间。当试图简写不可达主机时此选项很有用

    1 #!/bin/bash
    2 if ping -c 1 192.168.11.5 &>/dev/null;then
    3 echo "OK" 
    4 else
    5 echo "NO"
    6 fi
    View Code
    1 #!/bin/bash
    2 read -p "请输入您想检测的IP地址:" ip
    3 ping -c 1 -w 1 $ip &>/dev/null
    4 if [ $? -eq 0 ];then
    5 echo "OK" 
    6 else
    7 echo "NO"
    8 fi
    View Code

    if 语句可以直接对命令状态进行判断,就省去了获取$?这一步!

    如果我们不想让用户看到命令的执行结果,可以把执行结果追加到/dev/null文件中(黑洞文件)

    3、多分支

    if 条件表达式; then

      命令

    elif 条件表达式; then

      命令

    else

      命令

    fi

    当不确定条件符合哪一个时,就可以把已知条件判断写出来,做相应的处理。

    实例:

    $1:表示接受用户输入参数

     1 #!/bin/bash
     2 N=$1
     3 if [ $N -eq 3 ];then
     4         echo "eq 3"
     5 elif [ $N -eq 5 ];then
     6         echo "eq 5"
     7 elif [ $N -eq 8 ];then
     8         echo "eq 8"
     9 else
    10         echo "no"
    11 fi
    View Code

    [root@ren5 ~]# sh c.sh 3
    eq 3

    如果第一个条件符合就不再向下匹配

    If语句实战案例

    1、完成用户输入文件或者目录的自动复制,并可以实现用户指定复制目标位置;用户体验佳。

     1 #!/bin/bash
     2 read -p "请输入你想复制的文件或目录:" file
     3 if [ -f "$file" -o -d "$file" ];then
     4         read -p "是否确定要复制该文件(y/n)" sure
     5         confirm=$(echo ${sure} |tr A-Z a-z )
     6         if [ "$confirm" == "y" ];then
     7                 read -p "请输入你要复制的位置:" place
     8                 if [ -d "$place" ];then
     9                         cp -a $file $place
    10                         echo "$file已经复制到$place。"
    11                 else
    12                         echo "$place位置不存在"
    13                         exit
    14                 fi
    15         elif [ "$confirm" == "n" ];then
    16                 echo "再见"
    17         else
    18                 echo "请输入y或n"
    19         fi
    20 else
    21         echo "$file不存在"
    22 fi
    View Code

    2、尝试写一个shell简单的计算器,实现加减乘除。

    请输入一个数字: 7

    请输入运算符:+

    请输入第二个数字:7

    7+7=14

     1 #!/bin/bash
     2 read -p "请输入第一个数字:" NUM1
     3 read -p "请输入运算符[+-*/]:" CHA
     4 read -p "请输入第二个数字:" NUM2
     5 if [ -n "$NUM1" -a -n "$CHA" -a -n "$NUM2" ];then
     6         if [ "$CHA" == "+" ];then
     7                 echo "$NUM1+$NUM2=$(($NUM1+$NUM2))"
     8         elif [ "$CHA" == "-" ];then
     9                 echo "$NUM1-$NUM2=$(($NUM1-$NUM2))"
    10         elif [ "$CHA" == "*" ];then
    11                 echo "$NUM1*$NUM2=$(($NUM1*$NUM2))"
    12         elif [ "$CHA" == "/" ];then
    13                 echo "$NUM1/$NUM2=$[$NUM1/$NUM2]"
    14         else
    15                 echo "请输入[+-*/]"
    16         fi
    17 else
    18         echo "请输入内容!"
    19 fi
    View Code
     1 #!/bin/bash
     2 read -p "请输入第一个数字:" NUM1
     3 read -p "请输入运算符[+-*/]:" CHA
     4 read -p "请输入第二个数字:" NUM2
     5 count () {
     6         echo "${NUM1}${CHA}${NUM2}=$((${NUM1}${CHA}${NUM2}))"
     7 }
     8 error () {
     9         echo "Usage:$0 {+|-|*|/}"
    10 }
    11 if [ -n "$NUM1" -a -n "$CHA" -a -n "$NUM2" ];then
    12         if [ "$CHA" == "+" ];then
    13                 count
    14         elif [ "$CHA" == "-" ];then
    15                 count
    16         elif [ "$CHA" == "*" ];then
    17                 count
    18         elif [ "$CHA" == "/" ];then
    19                 count
    20         else
    21                 error
    22         fi
    23 else
    24         echo "请输入内容!"
    25 fi
    View Code

    3、输入一个用户,用脚本判断该用户是否存在。

    1 #!/bin/bash
    2 read -p "请输入用户名:" USER
    3 TOF=$(cat /etc/passwd |awk -F: '{print $1}' |grep -w "$USER" -c)
    4 if [ $TOF -eq 0 ];then
    5         echo "该用户不存在"
    6 else
    7         echo "该用户存在"
    8 fi
    View Code
  • 相关阅读:
    mysql中profile的使用
    6、MySQL索引种类
    MySql事务
    MySQL视图(view)
    MySql数据库命令基本操作
    2、MySQL常见数据库引擎及比较?
    1、列举常见的关系型数据库和非关系型都有那些?
    Python中的顺序表
    双端队列
    手持移动端特殊链接:打电话,发短信,发邮件
  • 原文地址:https://www.cnblogs.com/renyz/p/11297798.html
Copyright © 2020-2023  润新知