if语句
- 语法1
if 条件
then 命令(集合)
fi
这里的条件就是使用test语句或者中括号语句(前一篇文章已经总结)
注意if语句必须以fi终止
练习:
#if test
if [ "13" -lt "12" ] # "13" 前一个空格,“13”后也有一个空格。
then
echo "yes 13 is less then 12"
else
echo "NO"
fi
- 语法2
if 条件1
then
命令1
elif 条件2
then
命令2
else
命令3
fi
#!/bin/bash
#if test
#this is a comment line
echo "Enter your filename:"
read myfile
if [ -e $myfile ]
then
if [ -s $myfile ];then
echo "$myfile exist and size greater than zero"
else
echo "$myfile exist but size is zero"
fi
else
echo "file no exist"
fi
case多选择语句
case多选择语句格式:
case 变量/表达式 in
模式1)
命令1
;;
模式2)
命令2
;;
esac
- case取值后面必须为单词in;
- 每一模式必须以右括号结束。
- 取值可以为变量或常数。
- 匹配发现取值符合某一模式后,其后的所有命令开始执行,直到;;
- 模式匹配*表示任意字符; ?表示任意单字符; [..](注意:只有两个点)表示类或范围中任意字符
#!/bin/bash
#case select
echo -n "enter a number from 1 to 3:"
read num
case $num in
1)
echo "you select 1"
;;
2)
echo "you select 2"
;;
3)
echo "you select 3"
;;
y|Y)
echo “you select y”
;;
*)
echo "`basename $0`:this is not between 1 and 3">&2
exit;
;;
esac
- 所有的模式具有优先级,按照出现的顺序优先匹配
- 模式可以写成表达式表示一个范围如
y|Y
- 不能像C语言switch-case一样,将执行相同操作的多个模式写在一起,如果多个模式执行同一个操作,用
|
把他们组合起来,表示其中一个被匹配上执行相应的分支操作。