shell -- 条件判断式

条件判断式

只要讲到『程序』的话,那么条件判断式,亦即是『 if then 』这种判别式肯定一定要学习的!因为很多时候,我们都必须要依据某些数据来判断程序该如何进行。

 

if .... then

这个 if .... then 是最常见的条件判断式了~简单的说,就是当符合某个条件判断的时候,就予以进行某项工作就是了。这个 if ... then 的判断还有多层次的情况!我们分别介绍如下:

 

单层、简单条件判断式

 

如果你只有一个判断式要进行,那么我们可以简单的这样看:

 

if [ 条件判断式 ]; then

    当条件判断式成立时,可以进行的命令工作内容;

fi  <==将 if 反过来写,就成为 fi 啦!结束 if 之意!

 

 

例子:

 

[root@www scripts]# cp sh06.shsh06-2.sh  <==用改的比较快!

[root@www scripts]# vi sh06-2.sh

#!/bin/bash

# Program:

#      This program shows the user's choice

# History:

# 2005/08/25    VBird  First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

 

read -p "Please input (Y/N): " yn

 

if [ "$yn" == "Y" ] ||[ "$yn" == "y" ]; then

   echo "OK, continue"

   exit 0

fi

if [ "$yn" == "N" ] ||[ "$yn" == "n" ]; then

   echo "Oh, interrupt!"

   exit 0

fi

echo "I don't know what your choiceis" && exit 0

 

 

多重、复杂条件判断式

 

简单语法

 

# 一个条件判断,分成功进行与失败进行(else)

 

if [ 条件判断式 ]; then

    当条件判断式成立时,可以进行的命令工作内容;

else

    当条件判断式不成立时,可以进行的命令工作内容;

fi

 

 

更复杂的情况,则可以使用这个语法:

 

# 多个条件判断 (if ... elif... elif ... else) 分多种不同情况运行

 

if [ 条件判断式一 ]; then

    当条件判断式一成立时,可以进行的命令工作内容;

elif [ 条件判断式二 ]; then

    当条件判断式二成立时,可以进行的命令工作内容;

else

    当条件判断式一与二均不成立时,可以进行的命令工作内容;

fi

 

 

例子

 

[root@www scripts]# cp sh06-2.sh sh06-3.sh

[root@www scripts]# vi sh06-3.sh

#!/bin/bash

# Program:

#      This program shows the user's choice

# History:

# 2005/08/25    VBird  First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

 

read -p "Please input (Y/N): " yn

 

if [ "$yn" == "Y" ] ||[ "$yn" == "y" ]; then

   echo "OK, continue"

elif [ "$yn" == "N" ]|| [ "$yn" == "n" ]; then

   echo "Oh, interrupt!"

else

   echo "I don't know what your choice is"

fi

 

 

利用 case ..... esac 判断

 

他的语法如下:

 

case $变量名称 in   <==关键字为 case ,还有变量前有钱字号

 "第一个变量内容")   <==每个变量内容建议用双引号括起来,关键字则为小括号 )

    程序段

   ;;            <==每个类别结尾使用两个连续的分号来处理!

 "第二个变量内容")

    程序段

   ;;

 *)                  <==最后一个变量内容都会用 *来代表所有其他值

    不包含第一个变量内容与第二个变量内容的其他程序运行段

   exit 1

   ;;

esac                  <==最终的 case 结尾!『反过来写』思考一下!

 

例子

 

[root@www scripts]# vi sh09-2.sh

#!/bin/bash

# Program:

#    Show "Hello" from $1.... by using case .... esac

# History:

# 2005/08/29    VBird    First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

 

case $1 in

 "hello")

   echo "Hello, how are you ?"

   ;;

 "")

   echo "You MUST input parameters, ex> {$0 someword}"

   ;;

 *)   # 其实就相当於万用字节,0~无穷多个任意字节之意!

   echo "Usage $0 {hello}"

   ;;

esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值