当前位置: 首页 > wzjs >正文

中国人民建设银行官方网站充电宝关键词优化

中国人民建设银行官方网站,充电宝关键词优化,微信卖水果链接网站怎么做,南昌网站建设的流程目录 一、for 循环语句 二、while 循环语句 三、until 循环语句 四、总结扩展 1. 循环对比 2. 调试技巧 3. 易混淆点解析 4. 进阶技巧 一、for 循环语句 1. 基础概念 含义: 用于 遍历一个已知的列表,逐个执行同一组命令 核心作用&#xff1a…

目录

一、for 循环语句

二、while 循环语句

三、until 循环语句

四、总结扩展

1. 循环对比

2. 调试技巧

3. 易混淆点解析

4. 进阶技巧


 

 

 

 

一、for 循环语句

1. 基础概念

含义

用于 遍历一个已知的列表,逐个执行同一组命令

核心作用

对一组固定或可枚举的数据(如文件列表、数字序列)进行重复操作。

结构:

for 变量 in 取值列表  
do  命令组  
done  

2. 示例

根据姓名列表批量添加用户

1.准备测试文件(user_list.txt)

2.添加编辑脚本

#!/bin/bash  # 定义用户列表文件路径  
USER_LIST="/root/user_list.txt"  # 检查文件是否存在  
if [ ! -f "$USER_LIST" ]; then  echo "错误:用户列表文件 $USER_LIST 不存在!"  exit 1  
fi  # 使用 for 循环遍历文件中的用户名  
for username in $(cat "$USER_LIST"); do  # 跳过空行和注释行(以 # 开头)  if [[ -z "$username" || "$username" == \#* ]]; then  continue  fi  # 检查用户是否已存在  if id "$username" &> /dev/null; then  echo " 用户 $username 已存在,跳过..."  else  # 创建用户并设置家目录  useradd -m "$username"  # 设置初始密码(示例密码:123456)  echo "123456" | passwd --stdin  $username  &>/dev/null                          ###stdin : 标准输入 ,默认用键盘输入echo "用户 $username 创建成功!"  fi  
done  echo "所有用户处理完成!"  

批量重启服务

#!/bin/bash
# 检查是否以 root 用户身份运行
if [ "$(id -u)" -ne 0 ]; then    
echo "请以 root 用户身份运行此脚本。"    
exit 1
fi
# 定义要重启的服务列表
services=("nginx" "mysql" "redis")
log_file="/var/log/service_restart.log"
# for 循环:批量重启服务
for service in "${services[@]}"; do    
# 检查服务是否正在运行    
if systemctl is-active --quiet $service; then        
echo "正在重启 $service 服务..."systemctl restart $service        
if [ $? -eq 0 ]; then            
echo "$service 服务重启成功。"        
else            
echo "$service 服务重启失败。" | tee -a $log_filesystemctl status $service >> $log_file 2>&1            
echo "---------------------" >> $log_file        
fi    
else        
echo "$service 服务未运行,无需重启。"    
fi
done

3. 注意事项

  • 列表元素包含空格时需加引号:for item in "file 1" "file 2"

  • 使用$@遍历脚本参数:for param in "$@"


二、while 循环语句

1. 基础概念

含义:

当 条件测试结果为真(true)时,重复执行循环体,直到条件变为假(false)。

核心作用

处理不确定循环次数的场景(如持续读取输入、等待某个状态变化)。

结构:

while [ 条件测试 ]  
do  命令组  
done

2. 示例

批量添加规律编号的用户

#!/bin/bash  PREFIX="stu"
#定义整数变量值为1
i=1#设置密码为123456的批量用户
while [ $i -le 20 ]
do           useradd ${PREFIX}$iecho "123456" | passwd --stdin ${PREFIX}$i  &> /dev/nulllet i++    done 
echo "所有用户处理完成!"  

持续监控磁盘使用率

#!/bin/bash
# 设定磁盘使用率阈值
threshold=80
# 日志文件路径
log_file="/var/log/disk_usage.log"# while 循环:持续监控磁盘使用率
while true; dousage=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')if [ $usage -gt $threshold ]; thentimestamp=$(date '+%Y-%m-%d %H:%M:%S')message="$timestamp - 磁盘使用率超过 $threshold%,当前使用率为 $usage%。"echo "$message" | tee -a $log_file        # 可以添加发送邮件或者其他告警逻辑fisleep 3600  # 每小时检查一次
done    

3. 注意事项

  • 避免死循环:若条件永远为真(如 while true),需手动退出(break)

  • 管道输入会创建子shell:echo "文本" | while read(子shell变量不传递到主进程)


三、until 循环语句

1. 基础概念

含义

当 条件测试结果为假(false)时,重复执行循环体,直到条件变为真(true)。

核心作用

与 while 逻辑相反,适用于需要“等待某个条件达成”的场景。

结构:

until [ 条件测试 ]          # 条件为假时执行  
do  命令组  
done 

2. 示例

指定用户发送在线消息

#!/bin/bash
# 检查参数数量是否足够
if [ $# -lt 2 ]; thenecho "Usage: $0 <username1> <username2> ... <message>"exit 0
fi# 提取消息,消息为最后一个参数
message="${!#}"# 遍历除最后一个参数外的所有用户名
for username in "${@:1:$#-1}"; do# 检查用户是否为系统内用户if ! grep -q "^$username:" /etc/passwd; thenecho "$(date +'%Y-%m-%d %H:%M:%S') - $username is not a valid user on this system."continuefi# 持续检查用户是否登录while ! who | grep -q "$username"; doecho "$(date +'%Y-%m-%d %H:%M:%S') - $username is not logged on. Waiting for the user to log in."sleep 60done# 检查用户是否允许接收消息if ! mesg -c | grep -q "is y"; thenecho "$(date +'%Y-%m-%d %H:%M:%S') - $username has disabled message reception."continuefi# 用户已登录,发送消息echo "$(date +'%Y-%m-%d %H:%M:%S') - Sending message to $username..."write "$username" <<EOF
$message
EOFif [ $? -ne 0 ]; thenecho "$(date +'%Y-%m-%d %H:%M:%S') - Failed to send message to $username."fi
done

持续尝试连接数据库,直至连接成功

#!/bin/bash
# 数据库连接信息
host="localhost"
port="3306"
user="root"
password="password"# until 循环:持续尝试连接数据库直到成功
until mysql -h $host -P $port -u $user -p$password -e "SELECT 1" &> /dev/null; doecho "无法连接到数据库,等待 10 秒后重试..."sleep 10
done
echo "成功连接到数据库。"    

3. 特点

  • while逻辑相反:条件为时持续执行

  • 适合「等待型」场景(如检测服务就绪)

四、总结扩展

1. 循环对比

循环类型执行逻辑典型场景
for遍历列表中的每个元素处理文件、已知范围的数值迭代
while条件为真时执行读取输入流、条件动态变化的场景
until条件为假时执行等待某条件满足(如服务启动)

2. 调试技巧

#!/bin/bash -x  # 开启调试模式查看循环执行细节  
for file in *  
do  : # 空语句用于占位调试  
done  

3. 易混淆点解析

  • while vs until

    • while:条件为真时执行 → “只要...就继续”

    • until:条件为假时执行 → “直到...才停止”

  • for vs while

    • for 关注 遍历数据while 关注 动态条件

4. 进阶技巧

  • 嵌套循环

    for i in {1..3}  
    do  while [ $j -lt 2 ]  do  echo "$i-$j"  ((j++))  done  
    done  
  • 循环控制

    • break:立即退出循环。

    • continue:跳过当前迭代,进入下一轮。

  • 性能优化

    • 避免在循环内重复执行相同命令(如 ls),优先缓存结果。

    • 使用 & 后台执行耗时任务(需权衡并发控制)

    • 避免在循环内频繁调用grep/awk等外部命令

    • 大数据处理优先使用管道和xargs

    • 删除旧日志:

      #!/bin/bash
      # 清理 30 天前的日志文件(处理特殊字符)
      LOG_DIR="/var/log/app"
      DAYS=30find "$LOG_DIR" -type f -name "*.log" -mtime +$DAYS -print0 | while IFS= read -r -d '' file; doecho "删除旧日志: $file"rm -f "$file"
      done

      注释说明

-mtime +30:匹配修改时间超过 30 天的文件

-print0 + read -d '':安全处理含空格/换行符的文件名

  • 避免频繁启动子进程

    # 低效写法:每次循环调用一次 `date`  
    for i in {1..100}; do  current_time=$(date)  echo "$current_time"  
    done  # 高效写法:预先获取时间  
    current_time=$(date)  
    for i in {1..100}; do  echo "$current_time"  
    done  

    总结速查表

    场景推荐循环关键技巧
    遍历文件列表for + 引号包裹变量处理空格:find + while read -r
    动态读取输入/条件变化while用 break/continue 控制流程
    等待条件达成(如超时)until结合 sleep 避免 CPU 占用过高
    高性能批量处理xargs/parallel并行加速,减少子进程开销
    无限循环while true确保有退出条件(如 Ctrl+C 捕获信号)

 

http://www.dtcms.com/wzjs/223782.html

相关文章:

  • 做任务赚钱的网站百度网址入口
  • 2017最新网站设计风格win10系统优化软件
  • 天津网站建设推广微信营销软件哪个好用
  • 乐陵市人民医院seo超级外链
  • 做网站刷流量挣钱吗武汉seo服务外包
  • 网页制作的公司成都西安seo建站
  • 平原县网站建设商务网站如何推广
  • 网站建设项目管理攀枝花网站seo
  • 陕西餐饮加盟网站建设百度客服人工在线咨询
  • 网站建设与维护测试4怎样创建网站或者网址
  • 重庆在线网站推广seo排名点击软件
  • 海口网站建设介绍友情链接有哪些作用
  • 做网站封面要怎么做什么是口碑营销
  • 惠州网站外包网课免费平台
  • 石家庄抖音seo西安企业seo外包服务公司
  • 佛山移动网站建设公司新东方在线网上课程
  • 社区类网站开发企业文化ppt
  • 专门做招商的网站公司的公关
  • 在线视频网站怎么做seoseo技术软件
  • 自己做网站能否赚钱网站测试的内容有哪些
  • 管理登陆网站开发软件东莞网络公司电话
  • 企业免费招聘网站seo专员是什么意思
  • 广州网站建设信科公司谷歌seo价格
  • 推广策划案怎么写安卓优化
  • 网站导航做外链全球疫情最新数据消息
  • 开发项目管理软件惠州seo优化
  • 南宁市网站建设百度网盘客服24小时电话人工服务
  • 腾讯分分彩做号网站网站优化seo推广服务
  • 百度不做网站外链是什么原因头条新闻最新消息
  • 可以做生存分析的网站营销策划书模板范文