Linux循环控制语句

Linux shell 中 for 和 while 循环

1.数字段形式(自动补齐)
for i in {1..10}
do
   echo $i
done
2.详细列出(字符且项数不多)
for F in 1 2 3 4 5 
do 
    echo $F 
done
3.对存在的文件进行循环
for fname in `ls *.sh`
do 
          name=`echo "$fname" | awk -F. '{print $1}'`           
          echo $name
done''""来互相区分执行
4.查找循环(ls数据量太大的时候也可以用这种方法)
for fname in `find . -type f -name "*.sh"`
do 
          name=`echo "$fname" | awk -F/ '{print $2}'`          
          echo $name
done
5.((语法循环--有点像C语法,但记得双括号
for((i=1;i<100;i++))
do
    if((i%3==0))
    then
        echo $i
        continue
    fi
done

例子

6.seq形式 起始从1开始
for i in `seq 100`
do
    if((i%3==0))
    then
        echo $i
        continue
    fi
done
7.while循环注意为方括号[],且注意空格
min=1
max=100
while [ $min -le $max ]
do
    echo $min
    min=`expr $min + 1`
done  
8.双括号形式,内部结构有点像C的语法,注意赋值:i=$(($i+1))
i=1
while(($i<100))
do
    if(($i%4==0))
    then
        echo $i
    fi
    i=$(($i+1))
done

例子

9.从配置文件读取,并可以控制进程数量
MAX_RUN_NUM=8
cat cfg/res_card_partition.cfg |grep -v '^$'|grep -v "#" | grep -v grep |while read partition 
do        
                nohup sh inv_res_card_process.sh $partition >log/resCard$partition.log 2>&1 &               
                while [ 1 -eq 1 ]
                do
                                psNum=`ps -ef | grep "inv_res_card_process" | grep -v "grep" | wc -l`
                                if [ $psNum -ge $MAX_RUN_NUM ]
                                then
                                              sleep 5
                                else
                                              break
                                 fi                                        
                done                
done
循环控制语句
break 命令不执行当前循环体内break下面的语句从当前循环退出.
continue 命令是程序在本循体内忽略下面的语句,从循环头开始执行

附:

$类似于c++指针,或者python的变量

((表达式))等同于语言中(表达式)

for in 类似于Java中的foreach(),或者和python中的for in一致(迭代器)

if then(开始) else(或者) fi(结束)可以当作语言中的判断语句使用

### Linux Shell Script 中的循环语句用法 #### 1. `for` 循环 `for` 循环用于遍历一组固定的值或者范围内的数值。以下是常见的两种形式: - **传统方式** 遍历指定的一组值: ```bash for var in item1 item2 item3 ...; do command1 command2 done ``` - **C语言风格** 支持类似于 C 的语法,适用于更复杂的迭代逻辑: ```bash for ((i=start; i<=end; i++)); do commands done ``` 这种写法需要在支持该特性的 Shell 下运行,比如 bash 或 ksh[^2]。 #### 示例:使用 `for` 循环打印数字 ```bash #!/bin/bash for num in {1..5}; do echo "Number is $num" done ``` --- #### 2. `while` 循环 `while` 循环会在条件为真的情况下反复执行一段代码块。其基本结构如下: ```bash while condition_test; do commands done ``` 当条件始终满足时,可以用来处理动态数据流或文件读取场景。 ##### 示例:从标准输入逐行读取并显示内容 ```bash #!/bin/bash echo "Enter text (Ctrl-D to end):" while read line; do echo "$line" done ``` --- #### 3. 双重嵌套循环 在外层循环内部定义另一个循环称为双重嵌套循环。这种模式通常应用于矩阵运算或其他多维问题解决场合。 下面是一个简单的例子展示如何构建两层嵌套循环: ```bash #!/bin/bash # Double nested loops example for outer_var in A B C; do echo "Outer Loop Value: ${outer_var}" for inner_var in 1 2 3; do echo "- Inner Loop Value: ${inner_var}" done echo "" done ``` 上述脚本会依次输出字母变量搭配对应的数字组合[^3]。 --- #### 4. `until` 循环 与 `while` 不同的是,`until` 是基于反向判断机制工作的——即只有在其给定表达式的布尔值为假的时候才会进入主体部分执行相应指令集;一旦判定结果变为真,则立即退出当前控制流程。 通用模板如下所示: ```bash until condition_test; do statements_to_execute_if_condition_is_false done ``` ##### 实际应用案例演示等待某个进程结束再继续后续动作的功能实现方法之一。 ```bash PID=$(pgrep some_process) until ! ps -p $PID &>/dev/null ;do sleep 5; done echo 'Process has finished.' ``` 这里通过不断检测目标程序是否存在来决定何时停止轮询过程[^4]。 --- ### 总结 以上介绍了几种主要类型的shell scripting中的loop constructs及其实际运用技巧。每一种都有各自适用的最佳实践领域以及需要注意的地方,在具体开发过程中应根据实际情况灵活选用合适的工具完成任务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值