for 命令: for i in 的各种用法 : for i in “file1” “file2” “file3” for i in /boot/* for i in /etc/*.conf for i in $(seq -w 10) –》等宽的01-10 for i in {1…10} for i in $( ls ) for I in $(< file) for i in “$@” –》取所有位置参数,可简写为for i 注意:bash shell支持C式for循环 #!/bin/bash j=$1 for ((i=1; i<=j; i++)) do t 在Shell脚本编程中,`for`循环是一种常用的控制流程结构,它允许我们对一系列的值进行迭代。本文将深入探讨`for`循环的各种用法及其在不同场景下的应用。 1. **基本for循环语法**: ```bash for variable in value1 value2 value3 ... do commands done ``` 其中,`variable`是循环变量,`value1`, `value2`, `value3`等是迭代的值。 2. **字符串和文件名迭代**: - `for i in "file1" "file2" "file3"`:迭代多个字符串。 - `for i in /boot/*`:遍历`/boot/`目录下的所有文件和子目录。 - `for i in /etc/*.conf`:遍历`/etc/`目录下的所有`.conf`文件。 3. **序列生成**: - `for i in $(seq -w 10)`:使用`seq`命令生成等宽的01-10序列。 - `for i in {1...10}`:在Bash中,花括号扩展可以生成1到10的整数序列。 4. **命令输出迭代**: - `for i in $(ls)`:使用`ls`命令的结果作为循环变量,迭代当前目录下的文件和目录。 - `for i in $(< file)`:从文件中读取每一行作为循环变量。 5. **特殊变量**: - `$@`:包含所有位置参数,可以简化为`for i`。 - `$#`:返回位置参数的个数。 - `$0`:脚本名称。 - `$*`:所有位置参数的串联,用空格分隔。 6. **C风格的for循环**: ```bash for ((initialization; condition; increment/decrement)) do commands done ``` 这种形式更接近于C语言中的for循环,例如`for ((i=1; i<=$j; i++))`。 7. **注意事项**: - 在脚本开头指定使用的Shell类型,如`#!/bin/bash`。 - 变量名和函数名应具有描述性,函数名建议采用动名词,首字母大写。 - 使用4个空格缩进,避免使用制表符。 - 使用`${varname}`来获取变量值,以防止特殊情况的混淆。 - 避免直接使用`cd`改变目录,因为这会影响脚本的可移植性。 - 在删除文件时,确保变量已初始化,避免误删重要文件。 - 尽量使用单一功能的函数,提高代码可读性和可维护性。 - 多使用注释,便于理解和调试。 8. **实践示例**: - 实例1:清除ARP缓存。 - 实例2:生成随机数。 - 实例3:倒数计时器。 - 实例4:批量创建用户并设置密码。 - 实例5:查找并删除uid大于10000的用户。 - 实例6:正则匹配查找uid大于10000的用户。 - 实例7:检查网络中存活的主机。 9. **循环控制语句**: - `break`:退出当前循环。 - `continue`:跳过当前循环的剩余部分,进入下一次循环。 10. **位置参数**: - `$n`(n为数字):表示脚本接收到的第n个参数。 - `{n}`:用于访问大于9的位置参数。 理解并熟练掌握这些`for`循环用法,对于编写高效、可靠的Shell脚本至关重要。通过不断实践和应用,你可以创建出满足各种需求的自动化任务。
- 粉丝: 7
- 资源: 970
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0