for循环语句
for循环是一个遍历的过程
读取不同的变量值,用来逐个执行同一组命令。
for 变量名 in 取值列表
do
命令序列
done
while循环语句
重复测试某个条件,只要条件成立就反复执行,直到条件不成立结束循环。
while 条件测试操作
do
命令序列
done
示例
vim caishu.sh
#!/bin/bash
a=$[$RANDOM % 100]
b=0
while [ $b -lt 1 ]
do
read -p "猜猜数字是多少?"i
if [ $i -lt $a ]
then
echo "猜小了,再来一次。"
elif [ $i -gt $a ]
then
echo "猜大了,再来一次。"
elif [ $i -eq $a ]
then
echo "太棒了,猜对了"
b=2
fi
done
运行脚本
[root@localhost ~]# sh caishu.sh
猜猜数字是多少?50
猜大了,再来一次。
猜猜数字是多少?25
猜大了,再来一次。
猜猜数字是多少?15
猜大了,再来一次。
猜猜数字是多少?10
猜大了,再来一次。
猜猜数字是多少?5
猜大了,再来一次。
猜猜数字是多少?3
猜大了,再来一次。
猜猜数字是多少?1
猜小了,再来一次。
猜猜数字是多少?2
太棒了,猜对了
until循环语句
重复测试某个条件,只要条件不成立就反复执行,直到条件成立结束循环。(与while循环语句相反)
until 条件测试操作
do
命令序列
done
echo转义符
echo-n
表示不换行输出
echo-e
输出转义字符,将转义后的内容输出到屏幕上
常用的转义字符如下:
\b
:转义后相当于按退格键(backspace) ,但前提是"\b
"后面存在字符; "\b
“表示删除前一个字符,”\b\b
"表示删除前两个字符。
\c
:不换行输出,在"\c
“后面不存在字符的情况下,作用相当于echo -n
;但是当”\c
“后面仍然存在字符时,”\c
"后面的字符将不会被输出。
\n
:换行,被输出的字符从"\n
"处开始另起一行。
\f
:换行,但是换行后的新行的开头位置连接着上一行的行尾;
\v
:与\f
相同;
\t
:转以后表示插入tab
,即横向制表符;
\r
:光标移至行首,但不换行,相当于使用"\r
“以后的字符覆盖”\r
“之前同等长度的字符;但是当”\r"后面不存在任何字符时,"\r
" 前面的字符不会被覆盖
\\
:表示插入"\
"本身;
break
break跳出单个循环
示例:
[root@localhost ~]# vim xunhuan.sh
#!/bin/bash
for ((a=1; a<=5; a++))
do
echo "outer loop: $a"
for ((b=1; b<=50; b++))
do
if [ $b -eq 5 ]
then
break
fi
echo "inter loop: $b"
done
done
运行脚本:
[root@localhost ~]# sh xunhuan.sh
outer loop: 1
inter loop: 1
inter loop: 2
inter loop: 3
inter loop: 4
outer loop: 2
inter loop: 1
inter loop: 2
inter loop: 3
inter loop: 4
outer loop: 3
inter loop: 1
inter loop: 2
inter loop: 3
inter loop: 4
outer loop: 4
inter loop: 1
inter loop: 2
inter loop: 3
inter loop: 4
outer loop: 5
inter loop: 1
inter loop: 2
inter loop: 3
inter loop: 4
continue
continue中止某次循环中的命令,但不会完全中止整个命令
示例:
[root@localhost ~]# vim shulie.sh
#!/bin/bash
for ((a=1; a<=15; a++))
do
if [ $a -ge 5 ] && [ $a -le 10 ]
then
continue
fi
echo "current value: $a"
done
运行脚本:
[root@localhost ~]# sh shulie.sh
current value: 1
current value: 2
current value: 3
current value: 4
current value: 11
current value: 12
current value: 13
current value: 14
current value: 15