for循环语句
读取不同的变量值,用来逐个执行同一组命令
for 变量名 in 取值列表
do
命令序列
done
for循环有两种用法:
for i in {1…10}
for ((i=1; i<=10; i++))
实验操作
实验目的:
批量添加用户
把用户名存在在user.txt文件中,每行一个
密码设置123456
while循环语句
重复测试某个条件,只要条件成立则反复执行
while 条件测试操作
do
命令序列
done
实验操作
实验要求:
猜商品价格
通过变量RANDOM获取随机数
提示用户猜测并记录次数,猜中后退出循环
until循环语句
重复测试某个条件,只要条件不成立则反复执行
until 和 while 是完全相反的:
while是表达式正确才执行循环体,错误结束循环;
until 是表达式错误才会执行循环体,正确结束循环。
until 条件测试操作
do
命令序列
done
内外循环
内循环外循环就是在一个循环里再嵌套一个循环,嵌套的循环称之为内循环,被嵌套的循环称之为外循环。
内外循环的的执行,每执行一次外循环,就要执行内循环,不管内循环多少,都需要执行完再执行外循环
vim.123.sh
#!/bin/bash
for (( a=1;a<=5;a++ ))
do
echo "外层循环------$a"
for (( b=1;b<=10;b++ ))
do
echo -e "\t内层循环------$b"
done
done
例题实验:
实例一:使用脚本实验九九乘法表
#!/bin/bash
for (( a=1;a<=9;a++ ))
do
for (( b=1;b<=a;b++ ))
do
sum=$[ $b*$a ]
echo -ne "$b*$a=$sum\t"
done
echo ""
done
跳出循环
break跳出单个循环
根据上条脚本
vim 123.sh
#!/bin/bash
for (( a=1;a<=5;a++ ))
do
echo "外层循环------$a"
for (( b=1;b<=10;b++ ))
do
echo -e "\t内层循环------$b"
if [ $b -eq 5 ];then
break
fi
done
done
当你设置为break 2 时,代表的是跳出2层循环
跳出脚本
exit命令跟break命令意思相近,但是有所不同,break只是跳出循环,而exit命令执行是跳出脚本
实例操作:
用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输入3次则报警
vim 345.sh
#!/bin/bash
passwd=123456
for (( a=1;a<=3;a++ ))
do
read -p "请输入密码:" s
if [ $s = $passwd ];then
echo "输入正确!"
exit
fi
echo "输入有误!"
done
echo "连续输入3次有误,警告"
中止循环
continue中止某次循环命令,但是不会完全中止整个命令
vim 234.sh
#!/bin/bash
for (( a=1;a<=10;a++ ))
do
if [ $a -gt 5 ] && [ $a -lt 8 ]
then
continue
fi
echo "循环数字---a=$a"
done
IFS字段分隔符
默认包含 空格、制表符、换行符
set | grep IFS
IFS=$` \t\n`
修改成置换行
IFS=$` \n`
实验操作
实验要求:
输出环境变量PATH所包含的所有目录以及其中的所有可执行文件
#!/bin/bash
GAOTIAN=$IFS
IFS=$IFS:
bb="/etc/CXY.txt"
for i in $(echo $PATH)
do
echo "当前目录下可执行文件输入$bb 的文件中"
for a in $i/*
do
if [ -x $a ];then
echo -e "$a" >> $bb
fi
done
done
IFS=$GAOTIAN