if语句
语法为:
if condition1
then
statement1
elif condition2
then
statement2
else
statement3
fi
太简单,不写测试程序
case语句
语法:
case variable in
patrern1) statement1;;
patern2) statement2;;
#省略很多个
*) statement*;;
esac
- 每个模式都以双分号结尾
- *表示没个模式都不符合下处理的分支
测试代码:
#! /bin/bash
read -p "please enter number:" number
case $number in
1) echo "星期一";;
2) echo "星期二";;
3) echo "星期三";;
4) echo "星期四";;
5) echo "星期五";;
*) echo "周末";;
esac
运行如下:
for语句
语法:
for variable in values
do
statement
done
不符合我们通常的for语句语法,第二种是
for((assignment; condition;next));
do
statement
done
如:
#!/bin/bash
for((i=1;i<=7;i++));do
case $i in
1) echo "星期一";;
2) echo "星期二";;
3) echo "星期三";;
4) echo "星期四";;
5) echo "星期五";;
*) echo "周末";;
esac
done;
结果就和case语句的测试代码一样喽、
while语句
语法:
while ((condition))
do
statement
done
和其他语言几乎一模一样
until语句
语法:
until condition
do
statement
done
和while语句相反,不满足condition时才执行
#!/bin/bash
i=1;
until ((i>6))
do
case $i in
1) echo "星期一";;
2) echo "星期二";;
3) echo "星期三";;
4) echo "星期四";;
5) echo "星期五";;
*) echo "周末";;
esac
i=$(($i+1))
done;
当i=7时,不执行循环了。
所以输出一个周末。
break,continue语句
和其他语句类似,
- break,直接跳出循环
- continue,跳出本次循环,继续执行下次循环
- 没有什么好说的,记住就行了
shell函数
不含参数
- 先声明再调用。
含参
- 声明是通过
$n
获得第n个参数,当n大于等于10时,要${n}
获得。 - 传参数时,函数名后直接跟参数值
测试:
#!/bin/bash
fu(){
case $1 in
1) echo "星期一";;
2) echo "星期二";;
3) echo "星期三";;
4) echo "星期四";;
5) echo "星期五";;
*) echo "周末";;
esac
}
read -p "please enter number:" num
fu $num