Shell脚本教程:深入解析for循环

4 下载量 85 浏览量 更新于2024-08-31 收藏 115KB PDF 举报
"这篇教程详细解析了shell中的for循环用法,包括不同类型的for循环语法和示例,同时提供了编写shell脚本的最佳实践以及三个实践性的练习题目。" 在shell脚本编程中,for循环是一种常用的控制流程结构,用于重复执行一段代码直到满足特定条件。在shell中,for循环有多种不同的用法,可以处理字符串、文件列表、序列以及命令输出。 1. 基本for循环语法: `for i in item1 item2 item3; do commands; done` 这种形式的for循环用于遍历一系列指定的项,例如: ``` for i in "file1" "file2" "file3"; do echo $i; done ``` 2. 遍历目录中的文件: ``` for i in /boot/*; do echo $i; done ``` 或者 ``` for i in $(ls /etc/*.conf); do echo $i; done ``` 3. 使用`seq`命令生成等宽序列: ``` for i in $(seq -w 1 10); do echo $i; done ``` 4. 利用brace expansion(花括号扩展): ``` for i in {1..10}; do echo $i; done ``` 5. 处理命令的输出: ``` for i in $(ls); do echo $i; done ``` 或者读取文件内容: ``` for i in $(<file); do echo $i; done ``` 6. 处理所有位置参数: ``` for i in "$@"; do echo $i; done ``` bash shell还支持C风格的for循环,这种形式更接近于其他编程语言中的for循环: ```bash #!/bin/bash j=$1 for ((i=1; i<=j; i++)); do touch "file$i" && echo "file$i is ok" done ``` 在这个例子中,`$1`是第一个命令行参数,`for ((...))`用于创建一个计数循环,从1到$j。 编写shell脚本时应注意以下几点: - 在脚本开头指定shell类型,如`#!/bin/bash` - 添加脚本描述、使用方法、作者、版本和日期 - 变量名和函数名应有意义,函数名采用动名词并首字母大写 - 使用4个空格缩进,避免使用制表符 - 获取变量值时使用`${varname}`格式 - 删除文件前要确保变量有值,以防止误删 - 避免在脚本中频繁使用`cd`改变当前目录 - 函数应保持单一职责,功能简单明了 - 使用`$()`而不是``来执行命令替换 - 尽可能用`case`语句替换多层`if`语句 - 对输入参数进行有效性检查 - 注释要充足,便于理解和维护 最后,提供了三个练习题目: 1. 清除arp缓存记录: ``` #!/bin/bash for i in $(arp | tail -n +2 | tr -s ' ' | cut -d ' ' -f1); do arp -d $i done ``` 2. 生成10个随机数: 方法1: ``` for i in {0..9}; do echo $RANDOM; done ``` 方法2: ``` for i in $(seq 10); do echo $RANDOM; done ``` 3. 练习3:倒序输出数字1到10(请自行完成)。