Shell 脚本-6- 流程控制之判断分支

1. if-else

  • if-else 的判断表达式为中括号[]
  • 注意关键字elif, 不是elseif, 不要搞错了
  • 注意是以关键字fi 结尾, 不是以if 结尾
  • 注意if , [, 条件表达式, ] , ; , then 直接都要有空格
  • 注意代码缩进

1.1 if-fi 结构

  • shell 中的if 语句有两种写法, 笔者习惯于使用第一种.
  • 含义: 如果表达式为true, 则执行程序
# 第一种写法: 需要写; 要注意缩进
if [ 条件判断表达式 ] ; then
# 程序块儿
fi

# 第二中写法: 不需要写; 要注意缩进
if [ 条件判断表达式 ]
then
#程序块儿
fi

1.2 if-else-fi 结构

  • 由于if 有两种写法, 所以对应的if-else-fi 也有两种写法, 笔者就只列出第一种结构了
  • 含义: 如果条件表达式为true,则执行程序块儿一, 否则执行程序块儿二
if [ 条件判断表达式 ] ; then
# 程序块儿一
else
# 程序块儿二
fi

1.3 if-elif=else-fi

  • 由于if 有两种写法, 所以对应的if-elif-else-fi 也有两种写法, 笔者就只列出第一种结构了
  • 含义: 如果条件表达式一为true,则执行程序块儿一,如果条件表达式二为true,则执行代码块儿二, 否则执行程序块儿三
if [ 条件判断表达式 ] ; then
# 程序块儿一
elif [ 条件判断表达式二 ] ; then
# 程序块儿二
else
# 程序块儿三
fi

1.4 示例程序

#!/bin/bash

read -p "请输入一个数字:" num

if [ $num -eq 20 ] ; then
echo "$num > 20"
elif [ $num -eq 100 ] ; then
echo "$num > 100"
else
echo "$num < 20"
fi

** 输出结果 **

[admin@localhost shell]$ ./if.sh
请输入一个数字:1
1 < 20
[admin@localhost shell]$

2. case 多分支选择

case 是多分枝选择结构, 即一个判断表达式可以有多种匹配选项.

  • ;; 为跳出case 语句,类似于java 中的break;
    • 表示什么都不匹配时执行.

2.1 case 结构

case 字符串表达式 in
"值1")
程序块儿
;; #跳出case结构,相当于break;
"值2")
程序块儿
;;
...
*)
程序块儿 (不满足以上所有条件)
;;
esac

2.2 示例程序

#!/bin/bash

#输出菜单
echo " Menu "
echo " 1. Beijing - Tianjin"
echo " 2. Tianjin - Beijing"
echo " 3. qingdao - Beijing"
echo " 4. Beijing - Qingdao"

#读入输出:
read -p "Please input your chooise: " jour

#判断用户输入
case "$jour" in
"1")
echo " Beijing - Tianjin "
;;
"2")
echo " Tianjin - Beijing "
;;
"3")
echo " Qingdao - Beijing "
;;
"4")
echo " Beijing - Qingdao "
;;
*)
echo " Your chooise Error !"
;;
esac

** 输出结果: **

[admin@localhost shell]$ ./case.sh
Menu
1. Beijing - Tianjin
2. Tianjin - Beijing
3. qingdao - Beijing
4. Beijing - Qingdao
Please input your chooise: 1
Beijing - Tianjin
[admin@localhost shell]$

转载于:https://my.oschina.net/zongf/blog/1120339

你可能感兴趣的:(Shell 脚本-6- 流程控制之判断分支)