(34)for循环
时间:2022-07-24
本文章向大家介绍(34)for循环,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
格式1:
for 变量 in 值1 值2 值3
do
程序
done
例1.打印时间
脚本内容
#!/bin/bash
#Author:yuzai
for time in morning noon afternoon evening
do
echo “This time is $time!”
done
脚本执行结果
[root@lhh98330]# chmod 755 test4.sh
[root@llhh98330]# ./test4.sh
“This time is morning!”
“This time is noon!”
“This time is afternoon!”
“This time is evening!”
PS.这种方法看起来很笨,需要把循环次数写入for,但是在系统管理的时候,当我们不确定循环次数的时候(如下面的例子),这个时候这种方法就有一种好处,循环变量只要是由空格、回车、制表符分隔的(和cat,ls等命令结合使用,cat命令执行之后显示的结果就是由回车隔开的)。
例2.批量解压缩(不知道循环次数)
#!/bin/bash
#Author:yuzai
ls *.tar.gz > ls.log #将所有以.tar.gz结尾的文件输出覆盖到ls.log文件
for i in $(cat ls.log)
do
tar -zxf $i $>/dev/null
done
rm -rf /lamp/ls.log
例3.计算文件个数(不知道循环次数)
#!/bin/bash
#Author:yuzai
cd /root/sh
ls *.sh > ls.log
y=1
for i in $(cat ls.log)
do
echo $y
y=$(($y+1))
done
rm -rf ls.log
格式2:
for ((初始值;循环控制条件;变量变化))
do
程序
done
例1.从1加到100(知道循环次数)
#!/bin/bash
#Author:yuzai
s=0
for ((i=1;i<=100;i=i+1))
do
s=$(($s+$i))
done
echo "The sum of 1+2+...+99+100 is $s!"
例2.批量创建用户
#!/bin/bash
#Author:yuzai
read -p "Please input user name: " -t 30 name #输入用户名,等待时间30s
read -p "Please input the number of users: " -t 30 num #输入创建用户个数,等待时间30s
read -p "Please input the password of users: " -t 30 pass #输入用户密码,等待时间30s
if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ] #判断输入信息是否为空
then
y=$(echo $num | sed s/'^[0-9]*$'//g) #这里是判断输入的用户个数是否为数字,sed后也可以把^[0-9]*$换为's/[0-9]//g'
if [ -z "$y" ] #如果上一条语句输出不为空,就是输入的用户个数为数字,继续执行
then
for ((i=1;i<=$num;i=i+1)) #开始循环
do
/usr/sbin/useradd "$name$i" &>/dev/null #建立用户
echo $pass | /usr/bin/passwd --stdin "$name$i" &>/dev/null #设置用户密码,与用户名相同
done
fi
fi
执行结果:
[root@laptop]# chmod 755 3.sh
[root@laptop]# ./3.sh
Please input user name: new
Please input the number of users: 3
Please input the password of users: 111
[root@laptop]# cat /etc/passwd
new1:x:1006:1008::/home/new1:/bin/bash
new2:x:1007:1009::/home/new2:/bin/bash
new3:x:1008:1010::/home/new3:/bin/bash
END
- PHP跨站脚本攻击(XSS)漏洞修复思路(二)
- WordPress发布文章自动同步到新浪微博(带特色图片)
- go http 服务器编程(1)
- Linux系统内存监控、性能诊断工具vmstat命令详解
- go http 服务器编程(2)
- 利用placeholder属性来添加输入框默认文字提示,提高用户体验
- Linux系统监控、诊断工具之top命令详解
- 【Dev Club分享】iOS黑客技术大揭秘
- Linux终端:用cat命令查看不可见字符
- golang 函数定义及其接口实例
- 分享两种圣诞节雪花特效JS代码(网站下雪效果)
- React 移动 web 极致优化
- golang 高效字符串拼接
- Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL分布式逻辑备份
- OpenGL ES 相机 LUT 滤镜
- Siem落地方案:初识clickhouse
- FFmpeg + OpenGL ES 实现 3D 全景播放器
- 手把手教你自定义实现一个npm audit
- 异步神器CompletableFuture
- IoT安全测试指北
- Kubernetes 故障解决心得(一)
- Kubernetes 临时存储需要限制吗?
- PHP安全:变量的前世今生
- 如何使用ParamSpider在Web文档中搜索敏感参数
- Spring 的 Controller 是单例还是多例?怎么保证并发的安全
- 《剑指offer》第28天:最长上升子序列(高频)
- 《剑指offer》第27天:三角形最小路径和
- 《剑指offer》第26天:最大子序和