shell脚本的条件语句和循环语句以及函数-Linux(12)

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

运行如下:

shell脚本的条件语句和循环语句以及函数-Linux(12)_第1张图片

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

你可能感兴趣的:(Linux,shell)