我使用过的Linux命令之for - Bash中的For循环

我使用过的Linux命令之for - Bash中的For循环

本文链接:http://codingstandards.iteye.com/blog/778999   (转载请注明出处)

 

用途说明

在shell中用于循环。类似于其他编程语言中的for,但又有些不同。for循环是Bash中最常用的语法结构。

常用格式

格式一

for 变量

do

    语句

done

格式二

for 变量 in 列表

do

    语句

done

格式三

for ((变量=初始值; 条件判断; 变量变化))

do

    语句

done

使用示例

示例一

for s in ac apropos at arp
do
     echo $s
done 

 

 

[root@jfht ~]# for s in ac apropos at arp
> do
>     echo $s
> done
ac
apropos
at
arp
[root@jfht ~]#

示例二

for f in *
do
    echo $f
done
 

 

[root@jfht ~]# for f in *
> do
>     echo $f
> done
anaconda-ks.cfg
bak181
hlx
install.log
install.log.syslog
job.sh
job.txt
mbox
mini
setup
temp
vsftpd-2.0.5-16.el5.i386.rpm
vsftpd.conf
work191
[root@jfht ~]#

 

示例三

ls >ls.txt
for s in $(cat ls.txt)
do
    echo $s
done
 

[root@jfht ~]# ls >ls.txt

[root@jfht ~]# for s in $(cat ls.txt)
>
> do
>
>     echo $s
>
> done
anaconda-ks.cfg
bak181
hlx
install.log
install.log.syslog
job.sh
job.txt
ls.txt
mbox
mini
setup
temp
vsftpd-2.0.5-16.el5.i386.rpm
vsftpd.conf
work191
[root@jfht ~]#

 

示例四

print_args()
{
    for arg in "$@"
    do
        echo $arg
    done
}
print_args 1 2 3 4
print_args "this is a test"
print_args this is a test



[root@smsgw root]# print_args()
> {
>     for arg in "$@"
>     do
>         echo $arg
>     done
> }
[root@smsgw root]# print_args 1 2 3 4
1
2
3
4
[root@smsgw root]# print_args "this is a test"
this is a test
[root@smsgw root]# print_args this is a test
this
is
a
test

示例五

for ((i=0; i<10; ++i))
do
    echo $i
done

 

[root@smsgw root]# for ((i=0; i<10; ++i))
> do
>     echo $i
> done
0
1
2
3
4
5
6
7
8
9

 

示例六 列表为数组

AREAS=(1901 1902 1903 1904 1905 1906 1907   1908 1909 1910 1911 1912 1913)
NAMES=(南京 无锡 徐州 常州 苏州 南通 连云港 淮安 盐城 扬州 镇江 泰州 宿迁)
NUM_OF_AREAS=13
area_name_of()
{
    for ((I=0; I<$NUM_OF_AREAS; ++I))
    do
        if [ "$1" == "${AREAS[I]}" ]; then
            echo "${NAMES[I]}"
        fi
    done
}
echo $(area_name_of 1903)
for AREA in ${AREAS[*]};
do
    echo $AREA $(area_name_of $AREA)
done

 

[root@smsgw root]# AREAS=(1901 1902 1903 1904 1905 1906 1907   1908 1909 1910 1911 1912 1913)
[root@smsgw root]# NAMES=(南京 无锡 徐州 常州 苏州 南通 连云港 淮安 盐城 扬州 镇江 泰州 宿迁)
[root@smsgw root]# NUM_OF_AREAS=13
[root@smsgw root]# area_name_of()
> {
>     for ((I=0; I<$NUM_OF_AREAS; ++I))
>     do
>         if [ "$1" == "${AREAS[I]}" ]; then
>             echo "${NAMES[I]}"
>         fi
>     done
> }
[root@smsgw root]# echo $(area_name_of 1903)
徐州
[root@smsgw root]# for AREA in ${AREAS[*]};
> do
>     echo $AREA $(area_name_of $AREA)
> done
1901 南京
1902 无锡
1903 徐州
1904 常州
1905 苏州
1906 南通
1907 连云港
1908 淮安
1909 盐城
1910 扬州
1911 镇江
1912 泰州
1913 宿迁
[root@smsgw root]#

 

示例七 bash version 3.0+

bash --version
for i in {1..5}
do
   echo "Welcome $i times"
done 

 

[root@smsgw root]# bash --version
GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.
[root@smsgw root]# for i in {1..5}
> do
>    echo "Welcome $i times"
> done
Welcome {1..5} times
[root@smsgw root]#

换个较高版本的Linux。

[root@jfht ~]# bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[root@jfht ~]# for i in {1..5}
> do
>    echo "Welcome $i times"
> done
Welcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times
[root@jfht ~]#

 

示例八 Bash v4.0+

echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
  do
     echo "Welcome $i times"
 done

 

[root@smsgw root]# echo "Bash version ${BASH_VERSION}..."
Bash version 2.05b.0(1)-release...
[root@smsgw root]# for i in {0..10..2}
>   do
>      echo "Welcome $i times"
>  done
Welcome {0..10..2} times
[root@smsgw root]#

换个较高版本的Linux。

[root@jfht ~]# echo "Bash version ${BASH_VERSION}..."
Bash version 3.2.25(1)-release...
[root@jfht ~]# for i in {0..10..2}
>   do
>      echo "Welcome $i times"
>  done
Welcome {0..10..2} times
[root@jfht ~]#

传说Bash4.0可以支持这种语法。

Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times

 

问题思考

1. 怎么用for实现死循环(无限循环)?

2. 比较几种写法的不同:(1) for arg in $* (2) for arg in $@ (3) for arg in "$*" (4) for arg in "$@"

3. 怎么跳出for循环?

4. for s; do echo $s; done  这个写法的执行结果是什么?

相关资料

【1】小蜗牛技术之家 BASH for 循环小结

【2】相当不错的介绍for语句的英文资料 Bash For Loop Examples

【3】Bash新手指南 第9章 重复性任务

【4】Keep IT Simple and Stupid 在Bash的命令行使用For循环

 

返回 我使用过的Linux命令系列总目录

 

第七章 Bash循环 帮老师写的一个课件而已。 阅读详情

相关推荐

Linux Bash 中的循环 for, while and until

c<=5;$i<=9;i++));do echo $i;donedodonedodone单行实例donedo echo $i;

1057

bash for 循环的常用方法

1、罗列式 [code] for VARIABLE in 1 2 3 4 5 … N do command1 command2 commandN done [/code] [code] #!/bin/bash for i in 1 2 3 4 5 do echo “Welcome $i times” done [/code] 2、使用rang [code] #!/bin/bash for i in {1…5} do echo “Welcome $i times” done [/code] 3、使用rang

linux_tcpdump的博客 3264

UVM对象实例化及覆盖的几种方法

UVM对象实例化的方法有多种,以下以object为例: 1)第一种:直接利用new函数进行实例化 trans t1; t1 = new("t1");//利用new函数进行实例化 2)第二种:uvm_component_registry中提供的方法type_id::create,此种方法也是最常使用的方法 trans t2; t2 = trans::type_id::create("t2",this); 3)第三种:uvm_factory中提供的方法creat_object_by_type trans t

沧月九流的博客 3375

bash for循环_Bash 中的 For 循环

循环是编程语言的基本概念之一。当你想要一遍又一遍地运行一系列命令直到达到某个条件后终止退出时,循环很方便。在诸如 Bash 之类的脚本语言中,循环对于自动执行重复性任务非常有用。在 Bash 脚本中有3个基本的循环结构,for 循环, while 循环,until 循环。在本教程中,我们将介绍 Bash 中 for 循环的基础知识以及用于改变循环流的 break 和 continue 语句。标准 ...

weixin_39997443的博客 2767

COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南

多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真

weixin_30000735的博客 1329

基于DBSCAN聚类算法的超像素实时分割

Real-Time Superpixel Segmentation by DBSCAN Clustering Algorithm 摘要 在本文中,我们提出了一种基于密度的带噪声应用空间聚类(DBSCAN)算法的50帧/秒实时图像超像素分割方法。为了降低超像素算法的计算量,我们采用了一种快速的两步框架。在第一个聚类阶段,使用具有颜色相似性和几何约束的DBSCAN算法对像素进行快速聚类,然后在第二个合并阶段,通过颜色和空间特征定义的距离度量,将小簇按其邻域合并为超像素。为了在这两个步骤中获得更好的超像素,定义了

yttt的博客 3492

linux命令行使用for循环,小弟我使用过的Linux命令之for - Bash中的For循环

我使用过的Linux命令之for - Bash中的For循环我使用过的Linux命令之for - Bash中的For循环本文链接:http://codingstandards.iteye.com/blog/778999(转载请注明出处)用途说明在shell中用于循环。类似于其他编程语言中的for,但又有些不同。for循环是Bash中最常用的语法结构。常用格式格式一for 变量do语句done格式二...

weixin_30131185的博客 421

拆解特斯拉Optimus的关节技术:谐波减速器在仿人机器人中的5个精妙设计

本文深度解析特斯拉Optimus仿人机器人关节中的谐波减速器技术,揭示其五大工程突破:微型化材料革命、两万分之一圈精度实现、碳纤维柔轮轻量化、智能运维系统及国产替代方案。重点探讨谐波减速器如何通过创新设计和先进材料实现精准传动,为仿人机器人提供高效可靠的关节动力解决方案。

omega的博客 1075

我使用过的Linux命令之 for - Bash中的For循环

我使用过的Linux命令之for - Bash中的For循环 博客分类: Linux命令 BashLinuxRedHat编程F#  我使用过的Linux命令之for - Bash中的For循环     用途说明 在shell中用于循环。类似于其他编程语言中的for,但又有些不同。for循环是Bash中最常用的语法结构。 常用格式 格式一 for 变量 do

bincavin的专栏 734

树莓派4在Bookworm Raspbian系统下无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)

本文记录了这段比较坎坷的探索之路,由于你的问题不一定是我最终解决方案的,可能是前面探索路上试过的,所以建议按顺序看排除前置问题。 双十一又买了个树莓派 4B,插上之前树莓派 4B 的 TF 卡直接就能使用(毕竟是一样规格的)。但是由于用来连接硬盘的 USB 线是坏的,我以为是系统问题就进行了重装(所以坏掉的线还是直接扔了好)。 重新安装系统就装了最新的 2023-10-10 版本的 64 位的 Raspberry Pi OS,但是出现了一个问题: 启动后出现彩色画面,然后一直黑屏。

ZhongUncle的博客 3735

NXP S32K3xx 多次复位(reset)后MCU跑死、崩溃、出错分析

s32k3出现多次复位后死机的情况

HeFlyYoung的博客 9513

Qt新手避坑指南:Qt Creator+MSVC2019+Qt5.14.2精准配置

Qt 是一个模块化 C++ 开发框架,其核心价值在于跨平台 GUI 构建与底层系统集成能力。要真正用好 Qt,必须理解其工具链的硬性协同逻辑:Qt Creator 作为 IDE 壳体、MSVC 2019 提供 ABI 兼容的编译器肌肉、Qt 5.14.2 则是经严格验证的稳定骨骼版本。三者版本错配将直接导致 qmake 失效、调试器崩溃、驱动加载失败等典型问题。技术价值体现在工程可控性——避免‘能编译但不能调试’‘有界面但无数据库’等伪成功状态。典型应用场景包括工业控制软件、嵌入式桌面端、高校课程设计等对环

weixin_34268169的博客 337

使用verilog设计实现QR分解

QR(正交三角)分解法是求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量。 使用verilog对QR实现方法进行设计并进行功能仿真: 如下: 顶层模块代码: module TOP( H1R, H1I, H2R, H2I, H3R, H3I, H4R, H4I, clk, rst_n, Y1R, Y1I, Y2R, Y2I, X1R, X1I, X2R, X2I ); parameter width = 16; // I

QQ_778132974的博客 2149

linux中for循环数值处理,我使用过的Linux命令之for - Bash中的For循环

用途说明在shell中用于循环。类似于其他编程语言中的for,但又有些不同。for循环是Bash中最常用的语法结构。常用格式格式一for 变量do语句done格式二for 变量 in 列表do语句done格式三for ((变量=初始值; 条件判断; 变量变化))do语句done使用示例示例一Bash代码 forsinacaproposatarpdoecho$sdone[root@j...

weixin_39619451的博客 399

手把手教你学GPU的KMD专栏--3.4 中断处理机制与优化

记住,中断处理是GPU与CPU通信的"桥梁",没有高效的中断处理,GPU的性能将无法充分发挥。KMD通过"快进快出"原则、事件标志机制、GPU本机围栏等技术,实现高效、低延迟的中断处理。:GPU本机围栏机制允许GPU在满足特定条件(如围栏值达到某个阈值)时才触发中断,而不是每次围栏更新都触发中断,从而显著减少CPU唤醒次数,降低功耗。正如Microsoft GPU架构师在2022年WinHEC大会上指出:"没有好的中断处理,再强大的GPU也会被系统延迟拖垮。:多个GPU设备共享中断,导致中断处理混乱。

MHD0815的博客 112

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

bash循环

bash中有for、while、until三种循环结构;for循环次数一般是固定的,while和until的循环次数可以是固定也可以是不固定的。 1、for循环: for循环次数是固定的 1.1、语法结构: (1)、 for 变量名 [ in 取值列表] do command1; command2; ... done or 可以写到一行: for 变量名 [ in 取值列表 ] ;...

老赵的博客 1098

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Bash loop脚本编程

在Linux / UNIX操作系统下,如何使用bash for loop重复执行某些任务? for file in "*.list"; do if [ -e $file ]; then cat $file | grep ^Hostname[0-9]; fi done 示例正则表达式 例子 说明 [abc] 匹配 “a”、“b”、“c” 之一 [a-z] 匹配从 “a” 到 “z” 的任何一个小写字符 [A-Z] 匹配从 “A” 到 “Z” 的任何一个...

dangdanding的专栏 813

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Bash 脚本

什么是 Bash 简介 Bash(GNU Bourne-Again Shell)是一个为 GNU 计划编写的 Unix shell,它是许多 Linux 平台默认使用的 shell。 shell 是一个命令解释器,是介于操作系统内核与用户之间的一个绝缘层。准确地说,它也是能力很强的计算机语言,被称为解释性语言或脚本语言。它可以通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,这是大多数脚本语言的共同特征,所以有时候脚本语言又叫做“胶水语言”。 事实上,所有的 UNIX 命令和工具再

tangsiqi130的博客 1万+

中查询一个文件夹下文件数量_如何在 Bash 中使用循环 | Linux 中国

使用循环和查找命令批量自动对多个文件进行一系列的操作。-- Seth Kenlon(作者)人们希望学习批处理命令的一个普遍原因是要得到批处理强大的功能。如果你希望批量的对文件执行一些指令,构造一个可以重复运行在那些文件上的命令就是一种方法。在编程术语中,这被称作执行控制,for 循环就是其中最常见的一种。for 循环可以详细描述你希望计算机对你指定的每个数据对象(比如说文件)所进行的操作。一般的循...

weixin_34312809的博客 388

Shell之for循环批处理某个命令

方式二:脚本代码for循环。方式一:终端for循环。循环十次执行某个命令。

eighters的博客 675

shell中的for循环出现语法错误(syntax error: bad for loop variable)

出现这种错误是因为有些linux系统默认会使用ash进行编译shell脚本,我的机器就是这样,但是我写的脚本是应该用bash执行的。虽然我在开头注明了#!/bin/bash,好像它还是默认去找了ash,真是让人无奈。上网搜索了一下,找到两种解决方案:1、修改脚本 2、修改系统默认执行shell的工具 第一种的具体做法就是,原来的for循环类似这种 for(( i=1; i<3; i++))...

weixin_30627341的博客 643

Linux break 命令超详细教程:Shell 循环跳出必备,彻底掌握单层 / 多层退出

Bash中的break命令用于提前终止循环。基础语法为break [n],可选参数n表示跳出多层嵌套循环的层数(默认为1)。该命令适用于for、while和until循环,与continue跳过单次循环不同,break会直接终止整个循环。使用时需注意:参数必须≥1;只能在循环内部使用;主流Shell均支持但跨平台脚本建议简单使用。典型应用场景包括满足条件时跳出循环、控制嵌套循环层级等。

qq_36742166的博客 82

linux cp改文件名,更改Linux `cp`命令以复制文件组

问题:我想复制一个组文件,但不想逐个输入名称$ ls gmail-meta3*gmail-meta3 gmail-meta3-REC-1558392194-26467821gmail-meta3-LAB-1558392194-26467821 gmail-meta3-YAD-1558392194-26467821如何像旧的DOS命令copy gmail-meta3* *.bak之类的东西?我不想键...

weixin_39721009的博客 329

Linux Shell for循环写法总结

关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿... 1、 for((i=1;i 2、在shell中常用的是 for i in $(seq 10)  3、for i in `ls` 4、for i in ${arr[@]}    5、for i in $* ; do  6、for Fi

从来年少爱做梦,一心只想往前飞 622
上一篇: 我使用过的Linux命令之at - 在指定时间执行一次任务
下一篇: 我使用过的Linux命令之if - Bash中的条件判断语句
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值