1. if判断
1.1 基本语法
if else
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi
if else-if else
if [ 条件判断式 ];then
程序
elif [ 条件判断式 ];then
程序
else
程序
fi
注意事项:
(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格。
(2)if或elif后要有空格
1.2 实操案例
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
输出结果:
a 小于 b
1.3 扩展
if else 语句经常与 test 命令结合使用,如下所示:
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
输出结果:
两个数字相等!
2. case语句
2.1 基本语法
case $变量名 in
"值1")
如果变量的值等于1,则执行
;;
"值2")
如果变量的值等于2,则执行
;;
*)
如果变量的值都无法匹配,则执行
;;
esac
注意事项:
(1)case行尾必须为单词“in”
(2)每一个模式匹配必须以英文右括号 ) 结束。
(3)双分号" ;; "表示命令序列结束,相当于java中的break。
(4)最后的"*)"表示默认模式,相当于java中的default。
2.2 实操案例
输入一个数字,如果是1,则输出banzhang,如果是2,则输出cls,如果是其它,输出renyao。
[root@jiangnan data]# vi if3.sh
[root@jiangnan data]# cat if3.sh
#!/bin/bash
case $1 in
"1")
echo "banzhang"
;;
"2")
echo "cls"
;;
*)
echo "renyao"
;;
esac
[root@jiangnan data]# sh if3.sh 1
banzhang
[root@jiangnan data]#
类比java中的switch...case语法
3. for循环
3.1 语法格式1
for var in item1 item2 ... itemN
do
程序
done
3.2 语法格式2
for ((初始值;循环控制条件;变量变化))
do
程序
done
3.3 实操案例1
for var in 1 2 3 4 5
do
echo "The value is: $var"
done
输出结果:
The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5
3.4实操案例2
从1加到100
[root@jiangnan data]# vi for1.sh
[root@jiangnan data]# cat for1.sh
#!/bin/bash
s=0
for ((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo $s
[root@jiangnan data]# sh for1.sh
5050
[root@jiangnan data]#
注意:我们在之前的文章中说过了在使用for循环时带参数的情况,注意$@和$*的区别,可以看我之前的文章https://blog.csdn.net/weixin_45842494/article/details/123490655
4. while循环
4.1 基本语法
while [ 条件判断式 ]
do
程序
done
4.2 实操案例
从1加到100
[root@jiangnan data]# vi while.sh
[root@jiangnan data]# cat while.sh
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done
echo $s
[root@jiangnan data]# sh while.sh
5050
[root@jiangnan data]#
5. until 循环
until 循环执行一系列命令直至条件为 true 时停止。
until 循环与 while 循环在处理方式上刚好相反。
5.1 基本语法
until [ 条件判断式 ]
do
程序
done
5.2 实操案例
从1到100求和
[root@jiangnan data]# vi until.sh
[root@jiangnan data]# cat until.sh
#!/bin/bash
a=0
s=0
until [ ! $a -le 100 ]
do
s=$[$s+$a]
a=$[$a+1]
done
echo $s
[root@jiangnan data]# sh until.sh
5050
[root@jiangnan data]#
6. 无限循环
6.1 基本语法
while :
do
程序
done
或者
while true
do
程序
done
或者
for (( ; ; ))
do
程序
done
6.1 实操案例
[root@jiangnan data]# vi for2.sh
[root@jiangnan data]# cat for2.sh
#!/bin/bash
for (( ; ; ))
do
echo "I love China"
done
[root@jiangnan data]# sh for2.sh
I love China
I love China
I love China
......
7. 跳出循环
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。
7.1 break命令
break命令允许跳出所有循环(终止执行后面的所有循环)。
下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
break
;;
esac
done
执行以上代码,输出结果为:
输入 1 到 5 之间的数字:3
你输入的数字为 3!
输入 1 到 5 之间的数字:7
你输入的数字不是 1 到 5 之间的! 游戏结束
7.2 continue命令
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
对上面的例子进行修改:
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!"
continue
echo "游戏结束"
;;
esac
done
运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo "游戏结束" 永远不会被执行。
类比java中的break和continue
微信公众号先已开通,搜索 “江小南和他的小伙伴们” 就能找到我哦,各位小伙伴们可以关注一下,文章会进行同步更新,方便查看哦。