shell 循环结构

举报
小麦大叔 发表于 2021/12/30 00:13:04 2021/12/30
【摘要】 前言 循环结构在编程中十分常见,也是程序中是较为重要的一部分,在bash中有 for,until,while 这三种语句可以进行重复执行部分程序流程,下面会进一步讨论这三个指令的使用以及注意事项 fo...

前言

循环结构在编程中十分常见,也是程序中是较为重要的一部分,在bash中有 foruntilwhile 这三种语句可以进行重复执行部分程序流程,下面会进一步讨论这三个指令的使用以及注意事项

for

bash中for命令允许用户创建遍历一个系列值的循环,在循环中,建议执行预先设定好的程序或命令。for的基本格式如下:

for  val in list
do
    #TODO 
    #commands
done
  
 
  • 1
  • 2
  • 3
  • 4
  • 5

下面写几个简单的脚本熟悉一下for的用法。

1 从列表中读取

#!/bin/bash
for i in A B C D E F G
do
        echo "i is: $i"
done
  
 
  • 1
  • 2
  • 3
  • 4
  • 5

i is: A
i is: B
i is: C
i is: D
i is: E
i is: F
i is: G

2 从命令中读取

#!/bin/bash
val=`ls -l /`
for files in $val
do
        echo "output: $files"
done
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这里将根目录下的文件列表已经文件属性打印出来,由于默认分隔符号是空格,所以打印的结果如下,由于内容较多,已经省略大部分内容;

output: 总用量
output: 108
output: drwxr-xr-x
output: 2
output: root
output: root
output: 4096
output: 6月
output: 24
output: 20:53
output: bin
output: drwxr-xr-x
output: 4
output: root
output: root
output: 4096
output: 8月
output: 26
output: 06:28
output: boot
output: drwxrwxr-x

3 自定义分隔符

使用环境变量IFS可以将分隔符定义为用户想要使用的分隔符;

#!/bin/bash
val=`ls -l /`

#将分隔符号换成换行符
IFS=$'\n'
for files in $val
do
        echo "output: $files"
done
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

output: 总用量 108
output: drwxr-xr-x 2 root root 4096 6月 24 20:53 bin
output: drwxr-xr-x 4 root root 4096 8月 26 06:28 boot
output: drwxrwxr-x 2 root root 4096 6月 24 00:07 cdrom
output: drwxr-xr-x 19 root root 4220 8月 25 20:23 dev

4 双括号下的for命令

bash shell 中可以使用C语言风格的for命令;下例简单实现了求1+2+3+…+100的和。

#!/bin/bash
sum=0
for (( i=0; i<=100; i++ ))
do
        sum=$(( $sum + $i ))

done
echo $sum
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5050

while

bash shell 中的while命令会测试判断当前的cmd是否返回正确值,当前cmd是否成立,如果成立,则执行循环体内的命令,while命令的基本格式如下:

while test cmd
do
    #TODO
    #commands
done
  
 
  • 1
  • 2
  • 3
  • 4
  • 5

通过while简单实现1至100的求和公式;

#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
        sum=$(($i+$sum))
        i=$(( $i+1 ))
done
echo $sum
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5050

until

until命令与while命令恰恰相反,当cmd命令不成立的时候,则执行循环体内部的指令,until命令的基本格式如下:

until test cmd
do
    #TODO
    #commands
done
  
 
  • 1
  • 2
  • 3
  • 4
  • 5

通过until简单实现1至100的求和公式;

#!/bin/bash

i=0
sum=0
until [ $i -gt 100 ]
do
        sum=$(($i+$sum))
        i=$(($i+1))
done
echo $sum

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

文章来源: great.blog.csdn.net,作者:小麦大叔,版权归原作者所有,如需转载,请联系作者。

原文链接:great.blog.csdn.net/article/details/82081296

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。