前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell 循环结构[通俗易懂]

shell 循环结构[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-15 11:20:27
3400
发布2022-09-15 11:20:27
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

前言

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

for

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

代码语言:javascript
复制
for  val in list
do
    #TODO 
    #commands
done

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

1 从列表中读取

代码语言:javascript
复制
#!/bin/bash
for i in A B C D E F G
do
        echo "i is: $i"
done

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

2 从命令中读取

代码语言:javascript
复制
#!/bin/bash
val=`ls -l /`
for files in $val
do
        echo "output: $files"
done

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

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可以将分隔符定义为用户想要使用的分隔符;

代码语言:javascript
复制
#!/bin/bash
val=`ls -l /`

#将分隔符号换成换行符
IFS=$'\n'
for files in $val
do
        echo "output: $files"
done

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的和。

代码语言:javascript
复制
#!/bin/bash
sum=0
for (( i=0; i<=100; i++ ))
do
        sum=$(( $sum + $i ))

done
echo $sum

5050

while

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

代码语言:javascript
复制
while test cmd
do
    #TODO
    #commands
done

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

代码语言:javascript
复制
#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
        sum=$(($i+$sum))
        i=$(( $i+1 ))
done
echo $sum

5050

until

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

代码语言:javascript
复制
until test cmd
do
    #TODO
    #commands
done

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

代码语言:javascript
复制
#!/bin/bash 
i=0
sum=0
until [ $i -gt 100 ]
do
        sum=$(($i+$sum))
        i=$(($i+1))
done
echo $sum

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163966.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • for
    • 1 从列表中读取
      • 2 从命令中读取
        • 3 自定义分隔符
          • 4 双括号下的for命令
          • while
          • until
          相关产品与服务
          命令行工具
          腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档