循环执行
循环执行 定义:将某段代码有次数或无次数循环执行多次。 构成要素:退出条件和进入条件 循环的三种语句:for、while、until
for循环:
格式
for 变量 in 列表;do
循环执行语句
done
执行机制:
依次将列表中的元素赋值给“变量名” ; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
列表生成方式:
1、直接给出生成列表
2、{1..10} 注意:{1..$变量名}是错误的写法
`seq start step end` start:起始值 (可以写可不写)
step:步长(可以写可不写)
end:终止值,可以 $变量名
3、返回列表的命令
$(common) 例如:`ls /var/*`
4、使用 glob, 如: *. sh
5、变量引用;
$@, $*
for循环类似c++用法
for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
do
循环体
done
for循环练习题
1、判断/var/目录下所有文件的类型 2、 添加10个用户 user1 - user10,密码同用户名 3、 /etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的文件输出为文件加stop ,以S开头的文件输出为文件名加start; “ K34filename stop” “S66filename start” 4、写一个脚本,提示输入正整数n的值,计算1+2+3+…n的总和 5、 打印九九乘法表
答案一
[root@centos7 bin]# cat varfor.sh
#!/bin/bash
for fname in `ls -d /var/*` 注意:ls -d /var/*列出的是文件的绝对路径,如果用ls /var/列出的为相对路径,需要到/var/目录下才能判断
do
if [ -h $fname ];then
echo "file $fname is symbolic link"
elif [ -d $fname ];then
echo "file $fname is dirctor"
elif [ -f $fname ];then
echo "file $fname is commom file"
elif [ -b $fname ];then
echo "file $fname is a block device "
else [ -c $fname ]
echo "file $fname is a character file"
fi
done
[root@centos7 bin]#
答案:2
[root@centos7 bin]# cat useraddfor.sh
#!/bin/bash
for username in user{1..10};do
if id -u $username >/dev/null 2>&1;then
echo "user exit"
else
useradd $username
echo "useradd success"
echo "$username:$username" |chpasswd
fi
done
[root@centos7 bin]#
答案:3
[root@centos7 bin]# cat rc3d.sh
#!/bin/bash
for fname in $(ls /etc/rc.d/rc3.d);do
if [[ "$fname" =~ ^[kK].* ]];then
echo "$fname stop"
elif [[ "$fname" =~ ^[sS].* ]];then
echo "$fname start"
fi
done
[root@centos7 bin]#
答案四:
[root@centos7 bin]# cat readnsum.sh
#!/bin/bash
#name:wangnannan
read -p "please input a inter:" int
if let $int+0 ;then
for i in `seq 1 $int`;do
let sum+=$i
done
else
echo "you input is not a integer"
exit 22
fi
echo "from 1 to $int sum is :$sum"
[root@centos7 bin]#
答案5
[root@centos7 until]# cat chengfabiaofor2.sh
#!/bin/bash
#name:wangnannan
for ((i=1;i<=9;i++));do
for((j=1;j<=i;j++));do
echo -ne "\033[41;41;41;41;32;4m$j*$i=$[j*i]\033[m \t"
done
echo
done
[root@centos7 until]#
[root@centos7 bin]# cat chengfabiao.sh
#!/bin/bash
for i in {1..9};do
for j in `seq 1 $i `;do
echo -e "$j*$i=$[ $i*$j ] \c "
done
echo -e "\n"
done
[root@centos7 bin]#
while循环
循环格式 while 条件;do 循环语句 done 循环机制: 循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“ false”终止循环 因此: CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正 循环要素: 进入循环:条件为真 退出循环:条件为假 while循环特殊格式 while read line;do 循环体 done < /path/somefile 循环机制:依次读取somefile文件中的每一行,将值赋给line 变量
until循环
until CONDITION; do
循环体
done
进入条件: CONDITION 为false
退出条件: CONDITION 为true
循环控制语句:
continue:退出当次循环 break:退出整个循环
创建无线循环
while true ;do
循环语句
done
until false ;do
循环语句
done
原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/37456

