曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5834|回复: 3
打印 上一主题 下一主题

[概念] 控制流 if 和 then 介绍

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2008-12-30 15:42:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
示例代码:
#!/bin/bash
#fitest

if [ "10" -lt "12" ]
then
        echo "yes,10 is less than 12"
fi

注意:if 和 [ 间要有空格,"10" 和 [ 间要有空格,"12" 和 ] 间要有空格 -lt 和 "10" 和 "12" 间可以没有空格。

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
沙发
 楼主| 发表于 2008-12-31 23:02:26 | 只看该作者

if 和 then 应用示例三

#!/bin/bash
#ifcp

echo -n "Enter your name:"
read NAM
#if [ -z $NAME ] ||                         // -z the length of STRING is zero(为空)
if  [ "$NAME" = "" ];then                   // = 或者 == 都可以
        echo "You did not enter a name"
elif [ $NAME = "root" ]; then
        echo "Hello root"
elif [ $NAME = "beyes" ]; then
        echo "Hello beyes"
else
        echo "you are not root or beyes,but hi, $NAME"
fi

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
板凳
 楼主| 发表于 2008-12-31 21:38:53 | 只看该作者

if 和 then 示例二

代码:
#!/usr/bash

echo -n "Please enter your name:"     // -n 不换行

read NAME                          // 读输入名称到变量

if [ "$NAME" == "" ];then
        echo "You did not enter your name"      //输入为空提示
else
        echo "Your name is ${NAME}"

fi

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
地板
 楼主| 发表于 2009-1-17 10:03:02 | 只看该作者

一个错误

测试代码:
#!/bin/bash

echo "Is it morning? Please answer yes or no"
read timeofday

if [ $timeofday = "yes" ]
then
echo "Good moring"

elif [ $timeofday = "no" ]; then
echo "Good afternoon"
else
echo "Sorry, $timeofday not recognized. Enter yes or no"
        exit 1
fi

exit 0

在上面的代码中,如果不是输入字符串,而是直接回车,那么就会出现以下的错误:
[beyes@localhost shell]$ ./check_elif.sh
Is it morning? Please answer yes or no

./check_elif.sh: line 6: [: =: unary operator expected
./check_elif.sh: line 10: [: =: unary operator expected

这是因为,当直接回车时,if 测试式就会变成:

if [ = "yes" ]

这不是正确的表达式,所以原句需要改成:

if [ "$timeofday" = "yes" ]        // $timeofday 加了双引号,其意是把回车也当作字符串来处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-15 07:56 , Processed in 0.065880 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表