十二、流程控制语句

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/play_chess_ITmanito/article/details/77967436

(1)if判断(结束用fi)

if判断:

语法:
if 条件
then 输出
fi
eg:
num1=2
num2=2
if [ ${num1} -eq ${num2} ];then
    echo `expr ${num1} \* ${num2}`;fi

if-else判断:

语法:
if  条件
then 输出
else 输出
fi
eg:
cd /home/data
if test -e ./a.sh
then
    echo 'The file already exists!'
else
    echo 'The file does not exists!'
fi

if then- else if- else判断:(两次判断)

if  条件
then 输出
elif 条件
then 输出
else 输出
fi
eg 1:
#!/bin/bash
a=1
b=2
if [ $a == $b ]
then
echo "a等于b"
elif [ $a -lt $b ]
then
echo "a小于b"
elif [ $a -gt $b ]
then
echo "a大于b"
else
echo "不符合以上所有判断"
fi

结果:
[root@h data]# vi a.sh
[root@h data]# chmod +x ./a.sh 
[root@h data]# ./a.sh 
a小于b
eg 2:(if与test命令结合使用)----test测试:数值测试可用[];字符串测试必须用{}

n1=$[2*4]
n2=$[5+3]
if test $[n1] -eq $[n2]
then
echo "n1等于n2"
else
echo "两数字不一样"
fi

(2)for循环

语法:
for variable in item1 item2 item3....
do
输出
输出
....
输出
done

合并成一行:
for variable in item1 item2 item3....; do 输出;输出;....;输出;done
in后面可以跟任何替换、字符串、文件
eg:
echo "--------\例一:$*--------"
for i in "$*";do
echo $i
done

echo "--------\例二:$@--------"
for i in "$@";do echo $i;done
执行结果:
[root@h data]# /bin/sh ./t2.sh "a" "b" "c" "d"
--------\例一:a b c d--------
a b c d
--------\例二:a b c d--------
a
b
c
d

注:

无限循环
for((;;))

(3)while
通常用于处理大量的命令,或是从输入文件中读取数据信息;(命令通常指测试条件)

格式:
while 判断条件
do
输出
done
eg 1:
#!/bin/bash
i=1
while(($i<=5))
do
echo "$i"
let "i++"
done

无限循环:

(不可用)while
do
输出
done

或者
while true
do
输出
done
eg 2echo "What's your name?"
while read name
do
echo "My name is ${name}!"
done

(4)until
until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用。

语法:(循环至少执行一次)
until 条件
do
输出
done

条件: 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。

eg:(使用 until 命令输出 0 ~ 9 的数字)
#!/bin/bash
echo "--------------until--------------------"
a=3
until [ ! $a -lt 6 ]
do
   echo $a
   a=`expr $a + 1`
done
echo "----------------while------------------------"
b=5
while(($b<=6))
do
   echo $b
   b=`expr $b + 1`
done

运行结果:
[root@h data]# /bin/sh d.sh 
-------------until--------------------
3
4
5
----------------while-----------------
5
6

(6)case

语法:
casein
模式1)
输出1
输出2
输出3
输出n;;
模式2)
输出1
输出2
输出3
输出n;;
esac
eg:
#!/bin/bash
echo "输入1到3之间的数字:"
echo "亲,输入的数字是:"
read num
case $num in
1)
echo "你选择了1";;
2)
echo "你选择了2";;
3)
echo "你选择了3";;
*)
echo "你没有输入1到3之间的数字";;
esac

(7)跳出循环
break和continue:
break命令
跳出所有循环(终止执行后面操作)
continue命令
不跳出所有循环,仅仅跳出当前循环

eg:
#!/bin/bash
echo "输入1到3之间的数字:"
echo "亲,输入的数字是:"
read num
while true
do
case $num in
1|2|3)
echo "你选择了$num";;
*)
echo "你没有输入1到3之间的数字";
continue
echo "over!"
;;
esac
done
eg2:
#!/bin/bash
while true
do
echo "输出1~5之间的数字:"
echo "请输入输出的数字是"
read num
case $num in
1|2|3|4|5)
echo "你选择了$num";;
*)
echo "只能输入1~5之间的数"
continue
echo "over!"
;;
esac
done

猜你喜欢

转载自blog.csdn.net/play_chess_ITmanito/article/details/77967436