一、for语句的结构
读取不同的变量值,用来逐个执行同一组命令,又有人称之为条件循环,或者for i in ,其实就是for循环的特性,次数和给与的条件是成正比的。
for语句结构:
for 变量名 in 取值列表
do
命令序列
done
for 收件人 in 邮件地址列表
do
发送邮件
done
{1..10}
$(seq 1 10) #指连续的1到10
((i=1;i<=10;i++))
显示基数
{1..10..2}
$(seq 1 2 10) #指1、3、5、7、9,1到10之间从1开始每个加2
((i=1;i<=10;i+=2))
for语句案例
计算1-100奇数之和
#!/bin/bash
sum=0
for ((i=1;i<=100;i+=2))
do
let sum=$sum+$i
done
echo $sum
批量添加用户
用户名存放在users.txt文件中,每行一个
初始密码均设为123456
#!/bin/bash
a=`cat users.txt`
for i in $a
do
useradd $i
echo "123123" | passwd --stdin $i
done
二、while语句的结构
重复测试某个条件,只要条件成立则反复执行
while 条件测试操作
do
命令序列
done
while 未猜中正确价格
do
反复猜测商品价格
done
while循环案例
while循环计算1-100整数和
#!/bin/bash
sum=0
i=0
while [ $i -le 100 ]
do
let sum=$sum+$i
let i++
done
echo $sum
猜数字游戏
#!/bin/bash
echo "来猜数"
a=$[$RANDOM % 100]
b=0
c=0
while [ $b -lt 1 ]
do
read -p "请输入你要猜的数: " d
if [ $d -lt $a ];then
echo "你猜小了"
let c++
elif [ $d -gt $a ] ;then
echo "你猜大了"
let c++
elif [ $d -eq $a ];then
let c++
echo "恭喜你才对了,它的数是$a,你一共猜了$c次!!"
fi
done
三、until语句的结构
重复测试某个条件,只要条件不成立则反复执行
until 条件测试操作
do
命令序列
done
until 未超过10
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"前面的字符不会被覆盖
\\ 表示插入"\"本身;