条件语句在编写脚本经常遇到;用于处理逻辑问题。
一 IF 语句
if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句:
if ... fi 语句;
if ... else ... fi 语句;
if ... elif ... else ... fi 语句。
例如: 就拿a=10;b=20来举例
>1. if ... fi 语句 : if01.sh #!/bin/sh a=10 b=20 if [ $a -lt $b ];then #$a小于$b echo "10 is less then 20" fi >2.if ... else ... fi 语句 :if02.sh #!/bin/sh a=10 b=20 if [ $a -lt $b ];then echo "10 is less then 20" else echo "10 is not less then 20" fi >3.if ... elif ... else ... fi 语句 :if03.sh #!/bin/sh a=10 b=20 if [ $a -lt $b ];then echo "10 is less then 20" elif [ $a -eq $b ];then echo "10 is equal to 20" else echo "10 is not less then 20" #我没找到好点的编辑器,我是用ue fi
二 case 语句
#case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。语法格式: case 值in 模式1) 命令1 . . . ;; 模式2) 命令2 . . . ;; esac
case工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。
如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令
下面的脚本提示输入1到4,与每一种模式进行匹配:
case01.sh #!/bin/sh read -n1 -p "please input your number: " num case $num in 1) echo "you select 1" ;; 2) echo "you select 2" ;; 3) echo "you select 3" ;; 4) echo "you select 4" ;; *) echo "you select other" ;; esac