在 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
注意事项
- 变量引用:在脚本中引用变量时,通常使用
$variable
或${variable}
。 - 空格:在
for
循环中,关键字in
和do
之间必须有空格。 - 引号:处理文件名时,建议使用双引号
"$file"
,以防止文件名中包含空格或其他特殊字符时出现问题。