Linux下Shell的for循环语句

本文深入探讨了Bash脚本中三种类型的循环结构:数字性循环、字符性循环及路径查找,通过具体示例展示了如何使用for in结构进行文件名、输入字符及路径的遍历,是学习Bash脚本循环机制的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

第一类:数字性循环
-----------------------------
for1-1.sh

#!/bin/bash  
  
for((i=1;i<=10;i++));  
do   
echo $(expr $i \* 3 + 1);  
done  

-----------------------------
for1-2.sh

#!/bin/bash  
  
for i in $(seq 1 10)  
do   
echo $(expr $i \* 3 + 1);  
done   

-----------------------------
for1-3.sh

#!/bin/bash  
  
for i in {1..10}  
do  
echo $(expr $i \* 3 + 1);  
done  

-----------------------------
for1-4.sh

#!/bin/bash  
  
awk 'BEGIN{for(i=1; i<=10; i++) print i}'  

第二类:字符性循环
-----------------------------
for2-1.sh

#!/bin/bash  
  
for i in `ls`;  
do   
echo $i is file name\! ;  
done   

-----------------------------
for2-2.sh

#!/bin/bash  
  
for i in $* ;  
do  
echo $i is input chart\! ;  
done  

-----------------------------
for2-3.sh

#!/bin/bash  
  
for i in f1 f2 f3 ;  
do  
echo $i is appoint ;  
done  

-----------------------------
for2-4.sh

#!/bin/bash  
  
list="rootfs usr data data2"  
for i in $list;  
do  
echo $i is appoint ;  
done  

第三类:路径查找
-----------------------------
for3-1.sh

#!/bin/bash  
  
for file in /proc/*;  
do  
echo $file is file path \! ;  
done  

-----------------------------
for3-2.sh

#!/bin/bash  
  
for file in $(ls *.sh)  
do  
echo $file is file path \! ;  
done  

总结:

现在一般都使用for in结构,for in结构后面可以使用函数来构造范围,比如$()、``这些,里面写一些查找的语法,比如ls test*,那么遍历之后就是输出文件名了。

### Linux Shell 编程中的循环语句 #### 1. `for` 循环语句 `for` 循环是一种常见的控制结构,用于遍历一组数据或执行特定次数的操作。它有两种主要形式: - **写法1**: 遍历取值列表 ```bash for 变量 in 列表项1 列表项2 ... 列表项N do 执行代码块 done ``` 这种方法适用于处理已知的一组固定值。 - **写法2**: C语言风格的计数器循环 ```bash for ((初始化; 条件判断; 更新)) do 执行代码块 done ``` 例如,在实际应用中可以用来创建用户账户[^5]: ```bash for i in $(cat /opt/user.txt) do useradd $i echo 123456 | passwd --stdin $i done ``` 这种用法展示了如何从文件中读取用户名并批量创建用户。 --- #### 2. `while` 循环语句 `while` 循环允许程序重复运行一段代码直到某个条件不再满足为止。其基本语法如下: ```bash while [ 表达式 ] do 执行代码块 done ``` 当表达式的布尔值为真时,会不断执行循环体内的指令;一旦变为假,则退出循环[^1]。 举个简单的例子来说明它的功能——计算从1加到10的结果[^4]: ```bash sum=0 counter=1 while [ "$counter" -le 10 ]; do sum=$((sum + counter)) counter=$((counter + 1)) done echo "Sum is $sum" ``` 上述脚本利用变量`$counter`作为计数器逐步增加数值,并累加至总和之中。 --- #### 3. `until` 循环语句 与`while`相反的是`until`循环,只有在其测试条件失败的时候才会进入循环内部操作一次或者多次直至该条件再次返回错误状态才停止工作。 ```bash until [ 表达式 ] do 执行代码块 done ``` 这意味着只要给定逻辑判定结果不是真的就持续运转下去。 比如下面这个片段演示了等待网络服务启动的过程: ```bash ping_result="" until [[ "$ping_result" == *"bytes from"* ]]; do ping_result=$(ping -c 1 google.com 2>/dev/null) sleep 1 done echo "Network service started." ``` 这通过不断地尝试连接外部服务器直到成功为止。 --- #### 4. 嵌套循环的应用场景 有时候为了完成更复杂的任务可能需要用到多层嵌套的形式。比如说打印金字塔形状图案就可以借助双重`for`循环实现[^2]: ```bash rows=5 for ((i=1;i<=rows;i++)); do for ((j=i;j<rows;j++)); do echo -n " " done for ((k=1;k<=(2*i-1);k++)); do echo -n "*" done echo "" done ``` 此段落定义了一个五级高的星号三角形输出模式。 --- ### 总结 以上介绍了几种典型的shell脚本编写技巧以及它们各自的适用范围。无论是单重还是多重组合运用这些工具都可以极大地提高自动化水平从而减少人工干预的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值