shell脚本中if流程控制语句的应用

简介:

上篇关于测试语句的使用规则及相关使用方法,如果仅仅孤立使用时很难有其用武之地,当然在shell脚本中其实不可能孤立存在的,只有与条件语句和控制语句等搭配使用才能使其功能得到最大限度的体现,因此在日常使用中,其功能不容小觑。

一、控制流程

    if控制流程可分为但分支if语句和多分支if语句,其使用语和C语言中有很多相似之处,具体用法如下文所述。

    1.1但分支if语句结构:

    wKioL1e3NOSTxnwPAABwSTN90Dc382.png-wh_50

    1.2基本语法

1
2
3
4
     if  条件        或     if  条件; then    // 分号表示两个命令写在一行并不相互影响,命令执行顺序是从左往右依次执行。
     then                  语句
     语句                  fi
     fi

    例一.   

1
2
3
4
5
#!/bin/bash
if  [ $USER == root ]; then
echo  "error"
exit  127                         // 此处的 exit 为错误输出提示符
fi

    1.3双分支if结构

    wKiom1e3Nwvycaf0AABzYtbp2zY512.png-wh_50

    1.4双分支if语句语法结构

1
2
3
4
5
     if  条件1 ; then
         命令1
     else
         命令2
     fi

    例二.

    

1
2
3
4
5
6
7
8
9
#!/bin/bash
ping  -c 3 $1 &>  /dev/null
if  [ $? - eq  0 ]; then
         echo  "THE HOST $1 is up"                   // 该行中的$1为位置参数,具体可见脚本运行实例
else
         echo  "THE HOST $1 is down"
fi
[root@node1 ~] # sh if1.sh 192.168.213.101
THE HOST 192.168.213.101 is up
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
service $1 status &>  /dev/null
if  [ $? == 0 ]; then
         echo  "THE $1 is running"
         else 
         echo  "THE $1 is Stop"
fi
[root@node1 ~] # sh if1.sh network
THE network is running
[root@node1 ~] # sh if1.sh NetworkManager
THE NetworkManager is running
[root@node1 ~] # service NetworkManager stop
Stopping NetworkManager daemon: [  OK  ]
[root@node1 ~] # sh if1.sh NetworkManager
THE NetworkManager is Stop
[root@node1 ~] #

二、多分支流程控制

    2.1流程控制原理图

    wKioL1e3OknAVA7QAACu8uIIpUM708.png-wh_50

    2.2语法结构    

1
2
3
4
5
6
7
8
9
10
if   条件1 ;  then
命令1
elif   条件2 ;  then
        命令2:
elif   条件3 ;  then
        命令3
……………………
else
        命令n
fi

    例三.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
ch=China
J=Japan
U=u.s
read  -p  "请输入你的国别:"  coun             //read 实现人机交互指令通常与-p -t 和-n配合使用
if  [ $coun == $ch ]; then
         echo  "您是中国人"
         elif  [ $coun == $J ] ; then
         echo  "你是日本人"
         else
         echo  "您是美国人"
fi
[root@node1 ~] # ./if1.sh 
请输入你的国别:U.s         
您是美国人
[root@node1 ~] # ./if1.sh 
请输入你的国别:China
您是中国人
[root@node1 ~] #
1
[root@node1 ~] # vi if.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
read  -p  "请输入要测试的文件:"  file      // 操作者运行脚本时提示输入的文件
if  [ -d $ file  ] ;  then
         echo  "该文件是目录文件"
elif  [ -f $ file  ] ;  then
         echo  "该文件是普通文件"
elif  [ -r $ file  ] ;  then 
         echo  "该文件是可写文件"
else 
         echo  "该文件权限未知"
fi
[root@node1 ~] # ./if.sh 
请输入要测试的文件: passwd
该文件是普通文件

以上列举出了关于if几种常用的流程控制语句,动手试试吧!!!


本文转自 CARYFLASH 51CTO博客,原文链接:http://blog.51cto.com/maoxiaoxiong/1840493


相关文章
|
Shell 开发工具
shell编程之流程控制判断
一、shell判断-if 1.if判断基本概述 1.什么是if? If就是模仿人类的判断来进行的,但他没有人类那么有情感,只有True和false这两种结果。 2.为什么要使用if 当我们在写程序的时候,是否经常需要对上一步执行结果进行判断。那么判断就需要用if语句来实现。 3.if的基础语法 1.单分支语法 if [ $1 -eq $2];then echo “ok” fi 2.双分支结构 if [ $1 -eq $2 ];then echo “ok” else echo “error” fi 3.多分支结构###如果上面的匹配成功就不会继续向下匹配 if [ 如果你有房 ];then
150 0
|
14天前
|
JavaScript 前端开发 Shell
Shell 脚本编程保姆级教程(上)
Shell 脚本编程保姆级教程(上)
|
8天前
|
Shell Linux C语言
|
10天前
|
Shell 网络安全
shell脚本 配饰ssh
【7月更文挑战第15天】
11 4
|
14天前
|
网络协议 Shell Linux
Shell脚本配置Centos静态ip地址
这是一个用于在CentOS上设置静态IP的Shell脚本摘要: - 脚本交互式获取用户输入的IP地址、子网掩码、网关和DNS。 - 使用`sed`命令动态更新`/etc/sysconfig/network-scripts/ifcfg-ENS33`配置文件。 - 修改`BOOTPROTO`为`static`,并设置IP、NETMASK、GATEWAY和DNS1字段。 - 用`systemctl restart network`重启网络服务。 - 提示用户新配置的静态IP信息。
|
20天前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
|
26天前
|
Shell
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
24 1
|
13天前
|
Shell
Shell 脚本编程保姆级教程(下)
Shell 脚本编程保姆级教程(下)
|
1月前
|
监控 Shell Linux
Linux的Shell脚本详解
Linux的Shell脚本详解
|
1月前
|
Shell
shell脚本
shell脚本
23 2