shell编程——条件执行

我们知道程序无非三种执行方式——顺序、条件、循环。顺序就是一条一条的执行,是一马平川;条件就是个十字路口,根据条件决定自己的走向;循环就是笨驴拉磨,一圈一圈的走,知道达到条件终止。现在集中shell中的条件执行。

存在两个模式:

  • if...then...fi
  • case...esac

if...then...fi模式

基本语法:

if [ 条件表达式 ]; then
    条件满足时可执行的命令
fi

例子:

提示输入“Y"、“y"、“N"、“n".要是输入的“Y"或“y"则输出”Continue!";要是输入的“N"或“n"则输出”Oh,  You input No!";否则输出“Input Wrong".

#!bin/bash
read -p "Please input Y y N or n:" yn
if [ $yn == Y ] || [ $yn == y ]; then
    echo "Continue!"
    exit 1
fi
if [ $yn == N ] || [ $yn == n ]; then
    echo "Oh, You input No!"
    exit 1
fi

echo "Input Wrong"

这样看上去有点冗余(比如 exit 1),可以用下面的模式简化

if [ 条件1 ]; then
    满足条件1时执行1
elif [ 条件2 ]: then
    满足条件2时执行2
 .
 .
 .
else
    以上n-1个条件都不满足,执行n
fi

这样上面的程序简化下:

#!bin/bash
read -p "Please input Y y N or n:" yn
if [ $yn == Y ] || [ $yn == y ]; then
    echo "Continue!"
elif [ $yn == N ] || [ $yn == n ]; then
    echo "Oh, You input No!"
else
    echo "Input Wrong"
fi

那么当判断1——12月份时,那不if elif elif........的一大堆了,有一种case....esac模式

case....esac模式

case $变量名 in
”第1个变量内容“)
         程序段1
         ;;
”第2个变量内容“)
         程序段2
         ;;
 .
 .
 .
*)
         程序段n
         ;; 
esac

那就列出月份是属于哪个季度

#!bin/bash
read -p "Input the month(1-12):" mon
case $mon in
1)
    echo "the first quarter."
    ;;
2)
    echo "the first quarter."
    ;;
3)
    echo "the second quarter."
    ;;
4)
    echo "the second quarter."
    ;;
5)
    echo "the second quarter."
    ;;
6)
    echo "the third quarter."
    ;;
7)
    echo "the third quarter."
    ;;
8)
    echo "the third quarter."
    ;;
9)
    echo "the fourth quarter."
    ;;
10)
    echo "the fourth quarter."
    ;;
11)
    echo "the fourth quarter."
    ;;
12)
    echo "the fourth quarter."
    ;;
*)
    echo "Input Wrong!"
    ;;
esac

 

 

posted @ 2013-03-25 22:16  jihite  阅读(1104)  评论(0编辑  收藏  举报