小孔学Shell(bash/sh)-07-"分支结构之if/then/else"
昨天学习了分支结构中最基本也是最重要的判断条件的语句test,但是我们还没有应用到实际的脚本中,今天就结合分支结构最经典的if/then/else结构来进行应用。
shell的语法使用方括号来进行测试,并使用then和fi(if反过来写,if语句结尾必须要有它,正所谓有始有终)语句。
1、单分支结构
if [ 条件 ]
then
语句1
语句2
语句3
...
fi
上面的这个结构也可以都写在一行中,如下
if [ 条件 ];then 语句1;语句2;语句3;....;fi
****************************************************************************************************************
#!/bin/bash
#脚本名称:if_01.sh
#脚本功能:if/then单分支结构
#作者:小孔
#联系方式:你猜啊
#创建时间:2013-04-16
#版本:1.0.0.1
#版本最后修改日期:2013-04-16
#版权声明:有人需要才有它的价值,分享才是快乐的
echo "本脚本名为 `basename $0` - 我来自$0"
echo "我被调用的时候包含了$#个参数"
if [ "$#" -ge "1" ]; then
echo "我的用法:`basename $0`"
echo "你提供了$#个参数,我是不需要函数的,不觉得羞愧吗?"
exit
fi
read -p "你觉得小孔是什么样的人?" coolkong
if [ [ $coolkong == 严肃的人 && "$coolkong" != "" ] ]
then
echo "哼哼,小孔就是个严肃的人!"
exit
fi
echo 你才是$coolkong
****************************************************************************************************************
以上就是很典型的单分支结构,在判断语句中,正因为使用了&&,所以要用[语句;判断$coolkong是否为空时,!=两边都打上了双引号,这点也是需要注意的,还有就是为啥连着两个[在豆瓣上无法显示呢o(╯□╰)o。
运行结果如下:
如果你了解小孔的话,那么你输入"严肃的人"后:
如果你胡乱输入的话:
2、双分支结构
if [ 条件 ]
then
语句1
语句2
语句3
...
else
语句1
语句2
语句3
...
fi
****************************************************************************************************************
#!/bin/bash
#脚本名称:if_01.sh
#脚本功能:if/then双分支结构
#作者:小孔
#联系方式:你猜啊
#创建时间:2013-04-16
#版本:1.0.0.1
#版本最后修改日期:2013-04-16
#版权声明:有人需要才有它的价值,分享才是快乐的
echo "本脚本名为 `basename $0` - 我来自$0"
echo "我被调用的时候包含了$#个参数"
if [ "$#" -ge "1" ]; then
echo "我的用法:`basename $0`"
echo "你提供了$#个参数,我是不需要函数的,不觉得羞愧吗?"
exit
fi
MAX=100
MIN=0
guess=-1
let answer=($RANDOM % $MAX)
let answer+=1
temp=$MAX
times=0
while [ "$guess" -ne "$answer" ]
do
echo "小孔现在心里想了一个数字,是在$MIN和$MAX之间的整数。"
echo -en "猜一个吧,看看你和小孔有没有心有灵犀:"
read guess
times=`expr $times + 1`
if [ "$guess" -lt "$answer" ]
then
echo "你猜的数字太小了哦。"
if [ "$guess" -gt "$MIN" ]; then
MIN=`expr $guess + 1`
fi
else
if [ "$guess" -ne "$answer" ]; then
echo "你猜的数字太大了哦。"
if [ "$guess" -lt "$MAX" ];then
MAX=`expr $guess - 1`
fi
fi
fi
done
echo "经过$times次的猜测,你终于和小孔想到一起了"
****************************************************************************************************************
上面这个脚本是一个猜数字的游戏,可以考验你和小孔的默契哈哈哈。其中用到了RANDOM,这个也是bash中的特殊参数,可以产生0~32767之间的随机数呢。还有用到了expr 命令,它的格式是
expr 第一个参数 操作运算符 第二个参数 \\其中的空格不能漏哦哈哈
让我们看看运行结果吧:
今天先到这边,明天讨论下多分支结构。
shell的语法使用方括号来进行测试,并使用then和fi(if反过来写,if语句结尾必须要有它,正所谓有始有终)语句。
1、单分支结构
if [ 条件 ]
then
语句1
语句2
语句3
...
fi
上面的这个结构也可以都写在一行中,如下
if [ 条件 ];then 语句1;语句2;语句3;....;fi
****************************************************************************************************************
#!/bin/bash
#脚本名称:if_01.sh
#脚本功能:if/then单分支结构
#作者:小孔
#联系方式:你猜啊
#创建时间:2013-04-16
#版本:1.0.0.1
#版本最后修改日期:2013-04-16
#版权声明:有人需要才有它的价值,分享才是快乐的
echo "本脚本名为 `basename $0` - 我来自$0"
echo "我被调用的时候包含了$#个参数"
if [ "$#" -ge "1" ]; then
echo "我的用法:`basename $0`"
echo "你提供了$#个参数,我是不需要函数的,不觉得羞愧吗?"
exit
fi
read -p "你觉得小孔是什么样的人?" coolkong
if [ [ $coolkong == 严肃的人 && "$coolkong" != "" ] ]
then
echo "哼哼,小孔就是个严肃的人!"
exit
fi
echo 你才是$coolkong
****************************************************************************************************************
以上就是很典型的单分支结构,在判断语句中,正因为使用了&&,所以要用[语句;判断$coolkong是否为空时,!=两边都打上了双引号,这点也是需要注意的,还有就是为啥连着两个[在豆瓣上无法显示呢o(╯□╰)o。
运行结果如下:
如果你了解小孔的话,那么你输入"严肃的人"后:
![]() |
如果你胡乱输入的话:
![]() |
2、双分支结构
if [ 条件 ]
then
语句1
语句2
语句3
...
else
语句1
语句2
语句3
...
fi
****************************************************************************************************************
#!/bin/bash
#脚本名称:if_01.sh
#脚本功能:if/then双分支结构
#作者:小孔
#联系方式:你猜啊
#创建时间:2013-04-16
#版本:1.0.0.1
#版本最后修改日期:2013-04-16
#版权声明:有人需要才有它的价值,分享才是快乐的
echo "本脚本名为 `basename $0` - 我来自$0"
echo "我被调用的时候包含了$#个参数"
if [ "$#" -ge "1" ]; then
echo "我的用法:`basename $0`"
echo "你提供了$#个参数,我是不需要函数的,不觉得羞愧吗?"
exit
fi
MAX=100
MIN=0
guess=-1
let answer=($RANDOM % $MAX)
let answer+=1
temp=$MAX
times=0
while [ "$guess" -ne "$answer" ]
do
echo "小孔现在心里想了一个数字,是在$MIN和$MAX之间的整数。"
echo -en "猜一个吧,看看你和小孔有没有心有灵犀:"
read guess
times=`expr $times + 1`
if [ "$guess" -lt "$answer" ]
then
echo "你猜的数字太小了哦。"
if [ "$guess" -gt "$MIN" ]; then
MIN=`expr $guess + 1`
fi
else
if [ "$guess" -ne "$answer" ]; then
echo "你猜的数字太大了哦。"
if [ "$guess" -lt "$MAX" ];then
MAX=`expr $guess - 1`
fi
fi
fi
done
echo "经过$times次的猜测,你终于和小孔想到一起了"
****************************************************************************************************************
上面这个脚本是一个猜数字的游戏,可以考验你和小孔的默契哈哈哈。其中用到了RANDOM,这个也是bash中的特殊参数,可以产生0~32767之间的随机数呢。还有用到了expr 命令,它的格式是
expr 第一个参数 操作运算符 第二个参数 \\其中的空格不能漏哦哈哈
让我们看看运行结果吧:
![]() |
今天先到这边,明天讨论下多分支结构。