1. for循环
sum=0 for ((i=1;i<=10;i++)) do sum=$[$sum+$i] done echo $sum
<a name="cuTGC"></a>
# 2. while循环
<a name="n9XLa"></a>
## 100以内猜数字
```bash
#bin/bash
NUM=$[$RANDOM%100]
#echo $NUM
GS=101
#while true
while [ $GS -ne $NUM]
do
read -p "输入你猜的数字" GS
if [ $GS -lt $NUM ];then
echo "你猜的数字太小了"
elif [ $GS -gt $NUM ];then
echo "你猜的数字太大了"
else
echo "恭喜你,猜对了数字:$NUM"
exit 6
fi
done
while循环读取文件的3个方法
while read USER do useradd $USER PASSWORD=$(openssl rand -base64 8 | cut -c1-6) echo $PASSWORD | password —stdin $USER >& /dev/null if [ $? -eq 0 ];then echo create $USER sucessfully fi echo username:$USER password:$PASSWORD >> /root/zcw/userinfo done < /root/zcw/userlist
```bash
# cat iplist
192.168.147.101 5225
192.168.147.102 2234
192.168.147.103 4922
# cat while-read.sh
#!/bin/sh
while read line
do
IP=$(echo $line |awk '{print $1}')
PORT=$(echo $line |awk '{print $2}')
echo "IP: $IP, PORT: $PORT"
done <iplist
[root@zhouchunwei-6-60 zcw]# ./while-read.sh
IP: 192.168.147.101, PORT: 5225
IP: 192.168.147.102, PORT: 2234
IP: 192.168.147.103, PORT: 4922
采用exc读取文件,然后进入while循环处理
exec < /root/zcw/userlist while read USER do useradd $USER PASSWORD=$(openssl rand -base64 8 | cut -c1-6) echo $PASSWORD | password --stdin $USER >& /dev/null if [ $? -eq 0 ];then echo create $USER sucessfully fi echo username:$USER password:$PASSWORD >> /root/zcw/userinfo done
使用cat读文件,然后通过管道进入while循环处理
cat /root/zcw/userlist | while read USER do useradd $USER PASSWORD=$(openssl rand -base64 8 | cut -c1-6) echo $PASSWORD | password --stdin $USER >& /dev/null if [ $? -eq 0 ];then echo create $USER sucessfully fi echo username:$USER password:$PASSWORD >> /root/zcw/userinfo done
3. until循环
100以内猜数字
```bash
/bin/bash
NUM=$[$RANDOM%100] GS=101 echo “显示结果:$NUM”
until [ $GS -eq $NUM ] do read -p “Input your number: “ GS if [ $GS -lt $NUM ];then echo “你猜的数字太小了” elif [ $GS -gt $NUM ];then echo “你猜的数字太大了” else echo “恭喜你,猜对了数字:$NUM” exit 6 fi done
```bash
#/bin/bash
NUM=$[$RANDOM%100]
GS=101
echo "显示结果:$NUM"
until [ $GS -eq $NUM ]
do
read -p "Input your number: " GS
if [ $GS -lt $NUM ];then
echo "你猜的数字太小了"
elif [ $GS -gt $NUM ];then
echo "你猜的数字太大了"
elif [ $GS -eq $NUM ];then
echo "恭喜你,猜对了数字:$NUM"
exit 6
else
echo "Input ERROR"
fi
done
4. continue && break
continue
打印乘法表
结果只打印5列
for ((x=1;x<10;x++))
do
for ((y=1;y<=x;y++))
do
if [ $y -eq 5 ];then
continue
fi
echo -ne "$y * $x = $[$x*$y]\t"
done
echo ""
done
break
跳出整个循环
for ((x=1;x<10;x++))
do
for ((y=1;y<=x;y++))
do
if [ $y -gt 5 ];then
break
fi
echo -ne "$x * $y = $[$x*$y]\t"
done
echo ""
done