在 Linux shell 脚本中,for 循环是一种常用的控制结构,用于迭代一组值并执行相应的命令。下面是一些常见的 for 循环用法示例。

基本语法

for variable in list
do
    command1
    command2
    ...
done

示例

1. 迭代数字
#!/bin/bash

for i in 1 2 3 4 5
do
    echo "Number: $i"
done
2. 迭代文件名
#!/bin/bash

for file in *.txt
do
    echo "Processing file: $file"
done
3. 迭代目录中的文件
#!/bin/bash

for file in /path/to/directory/*
do
    if [ -f "$file" ]; then
        echo "File: $file"
    fi
done
4. 使用 seq 命令生成序列
#!/bin/bash

for i in $(seq 1 10)
do
    echo "Number: $i"
done
5. C 风格的 for 循环
#!/bin/bash

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

进阶用法

6. 迭代数组
#!/bin/bash

fruits=("apple" "banana" "cherry")

for fruit in "${fruits[@]}"
do
    echo "Fruit: $fruit"
done
7. 迭代文件内容
#!/bin/bash

while IFS= read -r line
do
    echo "Line: $line"
done < filename.txt

实际应用示例

8. 批量重命名文件

假设你有一批文件,需要将它们的扩展名从 .txt 改为 .md

#!/bin/bash

for file in *.txt
do
    newfile="${file%.txt}.md"
    mv "$file" "$newfile"
    echo "Renamed $file to $newfile"
done
9. 批量压缩文件

假设你有一批文件,需要将它们分别压缩成 .tar.gz 文件:

#!/bin/bash

for file in *.txt
do
    tar -czf "${file}.tar.gz" "$file"
    echo "Compressed $file to ${file}.tar.gz"
done

注意事项

  1. 变量引用:在脚本中引用变量时,通常使用 $variable${variable}
  2. 空格:在 for 循环中,关键字 indo 之间必须有空格。
  3. 引号:处理文件名时,建议使用双引号 "$file",以防止文件名中包含空格或其他特殊字符时出现问题。