曲径通幽论坛

标题: 控制流 if 和 then 介绍 [打印本页]

作者: beyes    时间: 2008-12-30 15:42
标题: 控制流 if 和 then 介绍
示例代码:
#!/bin/bash
#fitest

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

注意:if 和 [ 间要有空格,"10" 和 [ 间要有空格,"12" 和 ] 间要有空格 -lt 和 "10" 和 "12" 间可以没有空格。
作者: beyes    时间: 2008-12-31 21:38
标题: 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

作者: beyes    时间: 2008-12-31 23:02
标题: 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

作者: beyes    时间: 2009-1-17 10:03
标题: 一个错误
测试代码:
#!/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 加了双引号,其意是把回车也当作字符串来处理




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2