for语句的使用

一、Windows 批处理中的 for 语句

  1. 基本功能
  • 循环列表里的东西

    for %%i in (苹果 香蕉 橘子) do echo %%i
    

    效果:依次输出“苹果”、“香蕉”、“橘子”。

  • 一步步数数

    for /l %%i in (1,1,5) do echo %%i
    

    效果:输出 1、2、3、4、5。这里的 1,1,5 表示从 1 开始,每次加 1,到 5 结束。

  1. 常用场景
  • 找文件夹
    只列出当前目录下的文件夹(不显示文件):

    for /d %%i in (*) do echo %%i
    
  • 处理文件内容
    比如读取 1.txt 文件中的每一行,用冒号 : 分隔后取第二部分:

    for /f "delims=: tokens=2" %%i in (1.txt) do echo %%i
    
  • 处理带空格的文件名
    如果文件名有空格,需要加双引号:

    for /f "usebackq" %%i in ("我的 文件.txt") do echo %%i
    
  1. 小技巧
    循环内修改变量时,用 !变量名! 而不是 %变量名%
setlocal enabledelayedexpansion 
for %%i in (1 2 3) do (
    set num=!num!%%i
    echo 当前拼接结果:!num!
)

效果:依次输出 112123


二、Linux Shell 中的 for 语句

  1. 基本功能
  • 循环数数或列表

    for i in 1 2 3 4 5; do echo $i; done 
    

    效果:输出 1 到 5。

  • 类似数学的循环写法

    for ((i=1; i<=5; i++)); do echo $i; done 
    

    效果同上。

  1. 常用场景
  • 处理文件
    列出当前目录所有文件:

    for file in *; do echo "找到文件:$file"; done 
    
  • 批量操作
    比如批量创建用户(从 userlist.txt 读取用户名):

    for user in $(cat userlist.txt); do 
      useradd $user 
    done 
    
  • 生成序列
    输出 1、3、5、7、9:

    for i in {1..10..2}; do echo $i; done 
    
  1. 小技巧
  • 处理复杂文本
    如果文本中有空格,临时设置按换行符分割:

    IFS=$'\n'  # 按换行分割 
    for line in $(cat data.txt); do 
      echo "内容:$line"
    done 
    
  • 批量 ping 测试
    检查 192.168.1.1 到 192.168.1.5 是否在线:

    for ip in 192.168.1.{1..5}; do 
      ping -c1 $ip && echo "$ip 在线"
    done 
    

三、Windows 和 Linux 的区别总结

简单对比WindowsLinux
变量写法%%i(双百分号)$i(单美元符号)
数数写法for /l %%i in (1,1,5)for i in {1..5}for ((i=1; i<=5; i++))
处理文件需要配合 dir 命令直接写 *.txt 即可
适用场景文件整理、批量改名脚本自动化、服务器管理

四、实际例子
Windows:批量改名
把当前目录所有 .txt 文件按顺序改名:

set n=1 
for %%i in (*.txt) do (
    ren "%%i" "文件!n!.txt"
    set /a n+=1
)

Linux:快速生成乘法表

for ((i=1; i<=3; i++)); do   # 简化到3×3 
    for ((j=1; j<=i; j++)); do 
        echo -n "$j×$i=$((i*j)) "
    done 
    echo 
done 

输出:

1×1=1 
1×2=2 2×2=4 
1×3=3 2×3=6 3×3=9 

通过以上例子,可以快速上手两种系统的 for 循环,满足日常批量操作需求。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值