shell脚本系列:两种风格的for循环

摘要:
C语言风格格式fordostatementsdone示例#!/bin/bashsum=0i=1fordodoneecho"Thesumis:$sum"省略exp2,就没有了判断条件,如果不作其他处理就会成为死循环,我们可以在循环体内部使用break关键字强制结束循环:#!/bin/bashsum=0i=0fordoif;thenbreakfidoneecho"Thesumis:$sum"Python风格格式forvariableinvalue_listdostatementsdone示例#!/bin/bashsum=0fornin123456doecho$ndoneecho"Thesumis"$sum直接给出具体的值:#!/bin/bashforstrin"杰克""汤姆""爱丽丝""亨瑞"doecho$strdone给出一个取值范围:#!/bin/bashforcin{A..z}doprintf"%c"$cdone使用命令的执行结果:#!/bin/bashforfilenamein$doecho$filenamedone使用Shell通配符:#!

C语言风格

格式

for((exp1; exp2; exp3))
do
    statements
done

示例

#!/bin/bash

sum=0

for ((i=1; i<=100; i++))
do
    ((sum += i))
done

echo "The sum is: $sum"

修改“从 1 加到 100 的和”的代码,省略 exp1:

#!/bin/bash

sum=0
i=1

for ((; i<=100; i++))
do
    ((sum += i))
done

echo "The sum is: $sum"

省略 exp2,就没有了判断条件,如果不作其他处理就会成为死循环,我们可以在循环体内部使用 break 关键字强制结束循环:

#!/bin/bash

sum=0

for ((i=1; ; i++))
do
    if(( i>100 )); then
        break
    fi
    ((sum += i))
done

echo "The sum is: $sum"

省略了 exp3,就不会修改 exp2 中的变量,这时可在循环体中加入修改变量的语句。例如:

#!/bin/bash

sum=0

for ((i=1; i<=100; ))
do
    ((sum += i))
    ((i++))
done

echo "The sum is: $sum"

最后给大家看一个更加极端的例子,同时省略三个表达式:

#!/bin/bash

sum=0
i=0

for (( ; ; ))
do
     if(( i>100 )); then
        break
    fi
    ((sum += i))
    ((i++))
done

echo "The sum is: $sum"

Python风格

格式

for variable in value_list
do
    statements
done

示例

#!/bin/bash

sum=0

for n in 1 2 3 4 5 6
do
    echo $n
     ((sum+=n))
done

echo "The sum is "$sum

直接给出具体的值:

#!/bin/bash

for str in "杰克" "汤姆" "爱丽丝" "亨瑞"
do
    echo $str
done

给出一个取值范围:

#!/bin/bash

sum=0

for n in {1..100}
do
    ((sum+=n))
done

echo $sum
#!/bin/bash

for c in {A..z}
do
    printf "%c" $c
done

使用命令的执行结果:

#!/bin/bash

sum=0

for n in $(seq 2 2 100)
do
    ((sum+=n))
done

echo $sum
#!/bin/bash

for filename in $(ls *.sh)
do
    echo $filename
done

使用 Shell 通配符:

#!/bin/bash

for filename in *.sh
do
    echo $filename
done

使用特殊变量:

#!/bin/bash

function func() {
    for str in $@
    do
        echo $str
    done
}

func 小刘 小张 小宋

免责声明:文章转载自《shell脚本系列:两种风格的for循环》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker:Docker Compose 详解Vmware上安装Linux(centos7)图文教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【看书】关于for循环中定义变量的后续讨论

想想除了看书时之外 有时也会幸运地有点想法 所以再开一个类别来记录吧~ 在下希望这个分类下的博文越多越好 -.- ——中午记录——— 晚上有场个人赛 感觉略紧张啊…… 万一爆零肿么办 -_- 感觉晚上还会来编辑一次 先立个flag 【关于for循环中定义变量的后续讨论】 上次在书中看到了关于for循环中定义的变量问题1【看书】for循环中的定...

使用Terminal

在Mac中Terminal是使用bash的,下面列一列bash中常用的快捷键,可以提高工作效率哦: CRTL + W: 删除光标所在位置左边的第一个word,并且光标所在的字符不会被删掉; CRTL + R : 搜索命令历史 ESC + DEL:  删除光标所在位置左边的第一个word或者空格 OPTION+LEFT: 向左移动一个word OPTION+...

redhat安装Xvfb

1.下载xvfb的rpm包进行安装 下载rpm安装包:http://rhn.redhat.com/errata/RHBA-2013-0083.html 安装rpm包:#rpm -ivh --nodeps --force xxx.rpm 启动:#Xvfb -ac :7 -screen 0 1280x1024x8 #export DISPLAY=:7 测试:#...

Linux 命令详解(十一)Shell 解析 json命令jq详解

前言 在自动化部署中涉及到shell脚本需要动态读取很多配置文件,最好是json格式。 更多jq信息:http://stedolan.github.io/jq/manual/ 一、根据key获取value 语法:jq '.key' 1、单个值获取 www@TinywanAliYun:~$ cat d25341478381063d1c76e81b3a52e0...

Makefile 使用总结

1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的...

四、使用ADB命令清除缓存

一、ADB Shell 应用 查看目录结构 :adb shell ls 查看系统当前日期 :adb shell date 查看系统 CPU 使用情况 :adb shell cat /proc/cpuinfo 查看系统内存使用情况 :adb shell cat /proc/meminfo 显示所有应用 :adb shell pm list pack...