shell脚本之循环语句
一、echo的用法
1、echo -n
表示不换行输出
2、echo -e
输出转义字符,将转义后的内容输出到屏幕上
常见的转义字符有:
2.1 \b
相当于退格键
转义后相当于退格键(backspace),但是前提是“\b”存在字符。“\b”表示删除前一个字符,“\b\b”表示删除前面两个字符
2.2 \c
不换行输出
不换行输出,在“\c”后面不存在字符的情况下,作用相当于echo -n
,但是当“\b”后面仍然存在字符时,“\c”后面的字符将不会被输出
2.3 \n
换行输出
换行输出,被输出的字符从"\n"出开始另起一行
2.4 \f
、\v
换行输出
换行输出,但是换行后新行的开头位置连接着上一行的行尾
2.5 \t
制表符显示
转义后表示插入横向制表符,即tab
2.6 \r
光标移至行首不换行
光标移至行首,但是不换行,相当于使用“\r”之后的字符覆盖“\r”之前同等长度的字符,但是当“\r”后面不存在任何字符时,“\r”前面的字符不会被覆盖;当“\r”后面存在的字符大于前面时,“\r”前面的字符全部会被后面替代
2.7 \\
表示符号本身
在转义符前面加入转义符,代表将后面的转义符转义为符号本身,也就是 \
二、for循环(遍历)
1、 格式
for 变量名 in 取值列表 do 命令序列 done
for i in {1..10} {1..10..2} for i in $(seq 1 10) $(seq 1 2 10) for ( (i=1; i<=10; i++) ) ( (i=1; i<=10; i+=2) ) do echo $i done for ( (i=1; i<=10; i++)) ;do echo $i ;done
2、操作
2.1取值列表的多种表示方法
2.2for循环可在同一行表示
2.3for循环中,do done的相同作用的表示方法
2.4输出九九乘法表
for j in {1..9} do for i in `seq $j` do echo -e "${i}*${j}=$[i*j] \t\c" done echo done
三、while循环(迭代)
while循环可以不断的执行某个程序,直到用户设置的条件完成为止,所以重点是条件,这种不定循环最常见的就是下面这两种格式了。
1.格式:
while循环:while的中文是【当…时】,所以这种方式说的是,当判断式/命令序列的条件成立时,就进行循环,直到命令序列/程序段落的条件不成立才停止
while [ 条件测试操作 ] do #do代表循环的开始 判断式/命令序列 done #done代表循环的结束
2、实例操作:猜价格游戏,要求在0-999数字范围内猜价格,并有提示信息,统计最终猜测的次数
#!/bin/bash a=0 b=1 price=$[RANDOM%1000] while [ $a -eq 0 ] do read -p "请输入:" c if [ $c -eq $price ];then echo "答对了,共答了 $b 次" a=2 elif [ $c -lt $price ];then echo "猜低了" let b++ elif [ $c -gt $price ];then echo "猜高了" let b++ fi done
四、until循环
这种方式恰恰和while循环相反,它指的是当判断式/命令序列的条件成立时,就终止循环,否则就会持续循环程序段落。
1、格式
until [ 条件测试操作 ] do 判断式/命令序列 done