shell 循环结构[通俗易懂]

shell 循环结构[通俗易懂]前言循环结构在编程中十分常见,也是程序中是较为重要的一部分,在bash中有for,until,while这三种语句可以进行重复执行部分程序流程,下面会进一步讨论这三个指令的使用以及注意事项forbash中for命令允许用户创建遍历一个系列值的循环,在循环中,建议执行预先设定好的程序或命令。for的基本格式如下:forvalinlistdo#TODO…

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

前言

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

for

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

for  val in list
do
    #TODO 
    #commands
done

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

1 从列表中读取

#!/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 从命令中读取

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

#!/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的和。

#!/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命令的基本格式如下:

while test cmd
do
    #TODO
    #commands
done

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

#!/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命令的基本格式如下:

until test cmd
do
    #TODO
    #commands
done

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

#!/bin/bash 
i=0
sum=0
until [ $i -gt 100 ]
do
        sum=$(($i+$sum))
        i=$(($i+1))
done
echo $sum
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • css3新发现height:100vh;

    css3新发现height:100vh;vh/vwvh:相对于视窗的高度,视窗被均分为100单位的vh;vw:相对于视窗的宽度,视窗被均分为100单位的vw;vmax:相对于视窗的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax;vmin:相对于视窗的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin;视区所指为浏览器内部的可视区域大小,即window.innerWidth/…

    2022年4月30日
    125
  • FIR 带通滤波器设计

    FIR 带通滤波器设计  %本文将针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波器,%给出利用MATLAB实现的三种方法:程序设计法、FDATool设计法和SPTool设计法。参%数要求:采样频率fs=100Hz,通带下限截止频率fc1=10Hz,通带上限截止频率fc2=20Hz,过渡带宽6Hz,通阻带波动0.01…

    2022年5月4日
    43
  • 视频直播技术详解之一:开篇

    视频直播技术详解之一:开篇随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。七牛云作为一家以基础服务能力见长的云计算公司,于6月底发布了一个针对视频直播的实时流网络LiveNet和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣

    2022年7月21日
    19
  • 四周第三次课(4月13日)

    四周第三次课(4月13日)

    2022年4月2日
    42
  • 网吧管理软件激活成功教程

    网吧管理软件激活成功教程——————————————————————————-网吧管理软件激活成功教程作者:韦良君何利萍/Popunet 来源Conline网管软件不仅是存在漏洞而已,它们本身不是无懈可击的。有些漏洞会让它们彻底地失去作用。现在就一起来看看网管软件的致命伤。  《美萍》很受伤  受伤原因:…

    2022年7月12日
    55
  • 失而复得的爱情「建议收藏」

    失而复得的爱情「建议收藏」 那年夏天,长江边,夕阳还有一点点余辉,欢快的蛐蛐叫个不停。他和她坐在江边的石阶上,凝视波浪起伏的江面,任晚风吹乱本已理不清的思绪。  父母的叮咛始终绕在他的耳畔:“到大学要好好学习,你是我们的骄傲。”他不想因为谈恋爱而影响学习,让父母失望。虽然,她曾为他付出了很多,同时,他也恨自己,为什么当初要接受她?而她也知道他要对她说什么。  江水是浑浊的,心是沉重的。  风起了,江里的浪一浪高过一浪,气温

    2026年1月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号