if else语句linux,linux中流程控制语句if if else caselinux网页制作 -电脑资料

在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的参数值,linux中流程控制语句if if else caselinux网页制作》(https://www.unjs.com)。

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值