if选择结构:
if单分支处理
if [ 条件测试 ];then
执行命令
fi
———————————————————————————————————————————
if双分支处理,如果满足if的条件测试,则执行命令1,不满足执行命令2
if [ 条件测试 ];then
执行命令1 #如果符合条件则执行这个,下面的不执行
else
执行命令2 #如果不符合条件则执行这个
fi
———————————————————————————————————————————
if多分支处理,elif可以是多个
if [ 条件测试1 ];then
执行命令1 #如果符合条件1执行这个命令,不执行下列判断了
elif [ 条件测试2 ];then
执行命令2 #如果符合条件2执行这个命令,这个elif条件测试可以有多个,匹配上,就不执行下列判断了
else
执行命令3 #如果不符合以上所有条件则执行这个命令
fi
例如:
shell脚本中人为定义错误输出:
可以利用 >&2 和 exit 的返回值
例:
if [ $# -eq 0 ];then
echo "您没有输入参数" >&2 #将其定义为错误输出
exit 2 #还要定义这个错误输出的返回值,只有返回值是非0才是异常
fi
在终端执行完这个脚本,再 echo $? 可以看到输出一个数字2,说明系统已经认定这次执行结果为错误了。
——————————————————————————————————————————
case选择结构:
case 变量 in #这里的变量可以是位置变量,也可以各种其他变量,和for还是有些区别,for可以指定次数,case通常与位置变量连用
第1个匹配值) #如果变量的值=第1个匹配值,执行这里的命令
命令...;;
第2个匹配值)
命令... ;;
第3个匹配值|第4个匹配值) #如果变量的值=第3个和第4个匹配值,都执行这里的命令
命令...;;
*) #代表最后一个循环,变量的值与所有的上面的不匹配,走这里,这里是全匹配
命令...
命令
#最后*)里的所有命令不要写;;
esac
例如:
#!/bin/bash
case $1 in
haha)
echo $1 1;;
xixi)
echo $1 2;;
aa|bb)
echo $1 3;;
*)
echo failed
esac