linux中流程控制语句if if else case

流程控制语句:
    if语句格式如下:
    #if语句的后面是Shell命令,如果该命令执行成功返回0,则执行then后面的命令。
  

 代码如下 复制代码
  if command       
    then
        command
        command
    fi

    #用test命令测试其后面expression的结果,如果为真,则执行then后面的命令。
  

 代码如下 复制代码
  if test expression
    then
        command
    fi

    #下面的格式和test expression等同
  

 代码如下 复制代码
  if [ string/numeric expression ]
    then
        command
    fi

    #下面的两种格式也可以用于判断语句的条件表达式,而且它们也是目前比较常用的两种。
   

 代码如下 复制代码
if [[ string expression ]]
    then
        command
    fi
   
    if (( numeric expression ))           #let表达式
    then
        command
    fi

    见如下示例:
 

 代码如下 复制代码
   /> cat > test1.sh                       #从命令行直接编辑test1.sh文件。
    echo -e "Are you OK(y/n)? c"
    read answer

    #这里的$answer变量必须要用双引号扩住,否则判断将失败。当变量$answer等于y或Y时,支持下面的echo命令。

 代码如下 复制代码
    if [ "$answer" = y -o "$answer" = Y ]  
    then
            echo "Glad to see it."
    fi
    CTRL+D 
    /> . ./test1.sh
    Are you OK(y/n)? y
    Glad to see it.

    上面的判断还可以替换为:

 代码如下 复制代码
    /> cat > test2.sh
    echo -e "Are you OK(y/n or Maybe)? c"
    read answer

    # [[ ]]复合命令操作符允许其中的表达式包含元字符,这里输入以y或Y开头的任意单词,或Maybe都执行then后面的

 代码如下 复制代码
echo。
    if [[ $answer == [yY]* || $answer = Maybe ]] 
    then
        echo "Glad to hear it.
    fi
    CTRL+D
    /> . ./test2.sh
    Are you OK(y/n or Maybe)? yes
    Glad to hear it.

    下面的例子将使用Shell中的扩展通配模式。

 代码如下 复制代码
    /> shopt -s extglob        #打开该扩展模式
    /> answer="not really"
    /> if [[ $answer = [Nn]o?( way |t really) ]]
    > then
    >    echo "I am sorry."
    > fi
    I am sorry.

    对于本示例中的扩展通配符,这里需要给出一个具体的解释。[Nn]o匹配No或no,?( way|t really)则表示0个或1个( way或t really),因此answer变量匹配的字符串为No、no、Not really、not really、No way、no way。
    下面的示例使用了let命令操作符,如:

 代码如下 复制代码

    /> cat > test3.sh
    if (( $# != 2 ))                    #等同于 [ $# -ne 2 ]
    then
            echo "Usage: $0 arg1 arg2" 1>&2
            exit 1                         #exit退出值为0-255之间,只有0表示成功。
    fi
    if (( $1 < 0 || $1 > 30 ))      #等同于 [ $1 -lt 0 -o $1 -gt 30 ]
    then
            echo "arg1 is out of range."
            exit 2
    fi
    if (( $2 <= 20 ))                  #等同于 [ $2 -le 20 ]
    then
            echo "arg2 is out of range."
    fi
    CTRL+D
    /> sh ./test3.sh
    Usage: ./test3.sh arg1 arg2
    /> echo $?                          #Shell脚本的退出值为exit的参数值。
    1
    /> sh ./test3.sh 40 30
    arg1 is out of range.
    /> echo $?

    2
    下面的示例为如何在if的条件表达式中检验空变量:

 代码如下 复制代码

    /> cat > test4.sh
    if [ "$name" = "" ]                #双引号就表示空字符串。
    then
        echo "name is null."
    fi
    CTRL+D
    /> . ./test4.sh
    name is null.

    
    if/elif/else语句的使用方式和if语句极为相似,相信有编程经验的人都不会陌生,这里就不在赘述了,其格式如下:
   

 代码如下 复制代码
if command
    then
        command
    elif command
    then
        command
    else
        command
    fi

    见如下示例脚本:

 代码如下 复制代码

    /> cat > test5.sh
    echo -e "How old are you? c"
    read age
    if [ $age -lt 0 -o $age -gt 120 ]                #等同于 (( age < 0 || age > 120 ))
    then
            echo "You are so old."
    elif [ $age -ge 0 -a $age -le 12 ]               #等同于 (( age >= 0 && age <= 12 ))
    then
            echo "You are child."
    elif [ $age -ge 13 -a $age -le 19 ]             #等同于 (( age >= 13 && age <= 19 ))
    then
            echo "You are 13--19 years old."
    elif [ $age -ge 20 -a $age -le 29 ]             #等同于 (( age >= 20 && age <= 29 ))
    then
            echo "You are 20--29 years old."
    elif [ $age -ge 30 -a $age -le 39 ]             #等同于 (( age >= 30 && age <= 39 ))
    then
            echo "You are 30--39 years old."
    else
            echo "You are above 40."
    fi
    CTRL+D
    /> . ./test5.sh
    How old are you? 50
    You are above 40.

    
    case语句格式如下:
    case variable in
    value1)
        command
        ;;            #相同于C语言中case语句内的break。
    value2)
        command
        ;;
    *)                #相同于C语言中switch语句内的default
        command
        ;;
    esac
    见如下示例脚本:

 代码如下 复制代码
    /> cat > test6.sh
    #!/bin/sh
    echo -n "Choose a color: "
    read color
    case "$color" in
    [Bb]l??)
            echo "you select blue color."
            ;;
    [Gg]ree*)
            echo "you select green color."
            ;;
    red|orange)
            echo "you select red or orange."
            ;;
    *)
            echo "you select other color."
            ;;
    esac
    echo "Out of case command."
    /> . ./test6.sh
    Choose a color: green
    you select green color.
    Out of case command.
时间: 2024-09-20 08:41:43

linux中流程控制语句if if else case的相关文章

linux shell流程控制语句实例讲解(if、for、while、case语句实例)_linux shell

一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] 复制代码 代码如下: if 条件测试语句 then action [elif 条件 action else action ] fi 如果对于:条件测试语句不是很清楚,可以参考:linux shell 逻辑运算符.逻辑表达式详解shell命令,可以按照分号分割,也可以按照换行符分割.如果想一行写入多个命令,可以通过"';"分割.如: 复制代码 代码如下: [chengmo@centos5 ~]$

关于流程控制语句的问题

问题描述 关于流程控制语句的问题 '计算1+3+3的二次+3的三次+......+3的十次的值"的流程控制语句 解决方案 流程控制语句Linux Shell 流程控制语句黑马程序员-流程控制语句 解决方案二: 用for,while之类的循环,循环11次就行了吧? 解决方案三: public class TestAccumulation { public static void main(String[] args) { double exponent = 10.0;//幂 double base

awk 系列:在 awk 中如何使用流程控制语句

当你回顾所有到目前为止我们已经覆盖的 awk 实例,从 awk 系列的开始,你会注意到各种实例的所有指令是顺序执行的,即一个接一个地执行.但在某些情况下,我们可能希望基于一些条件进行文本过滤操作,即流程控制语句允许的那些语句. 在 awk 编程中有各种各样的流程控制语句,其中包括: if-else 语句 for 语句 while 语句 do-while 语句 break 语句 continue 语句 next 语句 nextfile 语句 exit 语句 然而,对于本系列的这一部分,我们将阐述:

《Linux C编程从入门到精通》一第2章 在Linux中编写C语言代码2.1 Linux中C语言程序开发流程和工具介绍

第2章 在Linux中编写C语言代码 Linux C编程从入门到精通 Linux作为一个操作系统,一项重要的功能就是要支持用户编程.传统的UNIX下的程序开发语言是C语言,C语言是一种平台适应性强.易于移植的语言.Linux是用C语言写成的.反过来,Linux又为C语言提供了很好的支持,C语言编译工具gcc.调试工具gdb属于最早开发出来的一批自由软件.因此Linux与C语言形成了完美的结合,为用户提供了一个强大的编程环境,本章将介绍在Linux中编写C语言程序的流程和具体方法. 2.1 Lin

awk系列:在awk中如何使用流程控制语句

当你回顾所有到目前为止我们已经覆盖的 awk 实例,从 awk 系列的开始,你会注意到各种实例的所有指令是顺序执行的,即一个接一个地执行.但在某些情况下,我们可能希望基于一些条件进行文本过滤操作,即流程控制语句允许的那些语句. 在 awk 编程中有各种各样的流程控制语句,其中包括: if-else 语句 for 语句 while 语句 do-while 语句 break 语句 continue 语句 next 语句 nextfile 语句 exit 语句 然而,对于本系列的这一部分,我们将阐述:

《Linux C编程从入门到精通》——第 2 章 在Linux中编写C语言代码 2.1Linux中C语言程序开发流程和工具介绍

第 2 章 在Linux中编写C语言代码 Linux作为一个操作系统,一项重要的功能就是要支持用户编程.传统的UNIX下的程序开发语言是C语言,C语言是一种平台适应性强.易于移植的语言.Linux是用C语言写成的.反过来,Linux又为C语言提供了很好的支持,C语言编译工具gcc.调试工具gdb属于最早开发出来的一批自由软件.因此Linux与C语言形成了完美的结合,为用户提供了一个强大的编程环境,本章将介绍在Linux中编写C语言程序的流程和具体方法. 2.1 Linux中C语言程序开发流程和工

JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)

Java流程控制语句 本博文将对JAVA中组成各种结构的控制语句进行重点介绍,主要内容是区别于C/C++中的流程控制语句的重点解析. 1.顺序语句 顺序结构中的语句可分为:表达式语句.空语句和复合语句三大类. 注: (1).空语句主要用来作为空循环体,其语法格式如下: : //其实就是一个分号 执行一个空语句,就是将控制转到该语句的结束点.这样,如果空语句是可以到达的,则空语句的结束点也是可以到达的. (2).复合语句又称为语句块,若语句块是空的,则控制转到语句块的结束点. 2.if条件语句 J

zephir-(11)流程控制语句

zephir-流程控制语句 前言 先在这里感谢各位zephir开源技术提供者 ZEPHIR实现了一个简化的控制结构语句,类似的语言如C,PHP等,那么今天就和笔者一同来学习zephir的流程控制语句把! 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客:w-blog.cn zephir官网地址:http://zephir-lang.com/ github地址:https://github.com/phalcon/zephir if语句 "if"语

在Linux中使用Openswan搭建站点到站点的IPsec VPN 隧道

在Linux中使用Openswan搭建站点到站点的IPsec VPN 隧道 虚拟私有网络(VPN)隧道是通过Internet隧道技术将两个不同地理位置的网络安全的连接起来的技术.当两个网络是使用私有IP地址的私有局域网络时,它们之间是不能相互访问的,这时使用隧道技术就可以使得两个子网内的主机进行通讯.例如,VPN隧道技术经常被用于大型机构中不同办公区域子网的连接. 有时,使用VPN隧道仅仅是因为它很安全.服务提供商与公司会使用这样一种方式架设网络,他们将重要的服务器(如,数据库,VoIP,银行服