Shell循环语句for、while、until
一、条件测试
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”前面的字符不会被覆盖。
\\
表示插入“\” 本身。
二、删除字符
i=`echo "11, 22, 33, 44"` echo ${i%,*} 11, 22, 33 //从最后倒数到最短的匹配部分(用%)后面的逗号的地方被删除 echo ${i%%,*} 11 //从最后倒数到最长的匹配部分(用88)后面的逗号的地方都被删除 echo ${i#*,} 22, 33, 44 //从开头到最短的匹配部分(用#)后面的逗号的地方被删除 echo ${i##*,} 44 //从开头到最长的匹配部分(用##)后面的逗号的地方被删除
例:
三、循环语句
for循环语句结构(遍历)
读取不同的变量值,用来逐个执行同一组命令。
for 变量名 in 取值列表 do 命令序列 done
for i in 1 2 3 4 5 6 或 for i in {1..6} 或 for i in ${seq 1 6} >do >echo $i >done 1 2 3 4 5 6
例:
几种不同的表达方式
for ((i=1; i<=10; i++)) 或 for ((i=1; i<=10; i++)); {echo $i; } >do >echo $i >done 1 2 3 4 5 6 7 8 9 10
例:
批量添加用户
◆用户名存放在users.txt文件中,每行一个。
◆初始密码均设为zxc123。
◆验证脚本。
根据IP地址检查主机状态
◆IP地址存放在ipadds.txt文件中,每行一个。
◆使用ping命令检测各主机的连通性。
四、while循环语句结构(迭代)
重复测试某个条件,只要条件成立则反复执行。
while [ 条件测试操作 ] do #do代表循环的开始 判断式/命令序列 done #done代表循环的结束
批量添加用户
◆用户名称以stu开头,按数字顺序进行编号。
◆一共添加20个用户,即stu1、 stu2、…、stu20。
◆初始密码均设为123456。
猜商品价格游戏
◆通过变量RANDOM获得随机数。
◆提示用户猜测并记录次数,猜中后退出循环。
五、until 循环语句结构
重复测试某个条件,只要条件不成立则反复执行。
until [ 条件测试操作 ] do 判断式/命令序列 done
示例
计算1~50的和值
◆通过循环累加的方式计算1~50的和值。