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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【矩阵论】单射、满射与双射

    【矩阵论】单射、满射与双射映射;Mapping映射是两个集合中的一种特殊的对应关系,即如果按照某种对应法则,对于集合A中的任何一个元素,在集合B中都有惟一的元素与它对应,那么这样的对应(包括对应法则)叫做集合A到集合B的映射。其中,A中的元素称为原像,B中的元素称为A中元素的像(imageimage)。单射、满射与双射;Injection,surjectionandbijection单射:在英语中称为injection

    2022年5月2日
    136
  • Ubuntu20.04环境下安装pip过程遇到问题总结「建议收藏」

    Ubuntu20.04环境下安装pip过程遇到问题总结「建议收藏」今天新装了Ubuntu环境,需要开发Python的代码,需要装一些环境,在安装过程中pip的安装总是出现问题,尝试了很多的方法才成功,下面把我遇到的问题做一下总结:Ubuntu环境如下:下载包的路径在文章末尾问题1:无法定位软件问题:解决办法:修改Ubuntu的软件源就能解决无法定位软件包的问题问题2:安装setuptools报错问题解决办法:执行命令:sudo apt-get install python3-distutils结果如下:正在读取软件包列表… 完成正在分析软件包的

    2022年8月11日
    6
  • Android 自定义View 三板斧之三——重写View来实现全新控件

    Android 自定义View 三板斧之三——重写View来实现全新控件

    2021年9月13日
    50
  • JavaScript—网络编程(3)-Object、String、Array对象和prototype属性[通俗易懂]

    JavaScript—网络编程(3)-Object、String、Array对象和prototype属性[通俗易懂]本节学习JavaScript的对象和方法(函数)~Object对象提供所有JScript对象通用的功能。obj=newObject([value])参数obj必选项。要赋值为Object对象的变量名。value可选项。任意一种JScript基本数据类型。(Number、Boolean、或String。)如果value为一个对象,返回不作改动的该对象。如果

    2022年5月9日
    48
  • 如何求协方差矩阵

    如何求协方差矩阵如何求协方差矩阵觉得有用的话,欢迎一起讨论相互学习~FollowMe转载自:https://blog.csdn.net/kuang_liu/article/details/16369475非常感谢1.协方差…

    2022年5月7日
    35
  • 五大常用算法之三:贪心算法[通俗易懂]

    五大常用算法之三:贪心算法[通俗易懂]贪心算法一、基本概念:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,

    2022年8月2日
    5

发表回复

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

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