1、for命令

(1)语法
    for val in list; docommandsdone

  list参数提供了一些列用于迭代的值,val值依次赋值为list中的值,知道list轮询结束。

commands可以是一条或多条shell命令,echo $val可以查看当前循环的值
(2)读取列表中的值
    $cat test#!/bin/bash# basic for commandfor test in A B C; doecho the next val is $testdone$./testthe next val is Athe next val is Bthe next val is C

每次for命令便利提供的值列表时, 会将列表中的下个值赋给$test变量。
在最后一次迭代中,$test的值会在shell脚本中的剩余部分一直有效。
当所要迭代的值中含有空格、单引号、双引号时,for命令不能识别其为值得一部分,可以采用两种方式处理:
当遍历的值中出现空格、单引号时,可以通过在值两侧添加双引号以示区别;
当遍历的值中出现单引号、双引号时,可以通过转义字符\来讲其转义;
(3)从变量或命令读取值
通常shell脚本遇到的情况是,将一系列的值存储在变量中,然后遍历整个变量列表
   $cat test#!/bin/bash# using a variable to hold the listlist="A B C"list=$list" D"for test in $list; doecho the next val is $testdone$./testthe next val is Athe next val is Bthe next val is Cthe next val is D

向已知变量中增加值通过list=$list" D"实现,这个尾部添加文本的一个常用方法
生成遍历列表的另一个方法是使用命令的输出,可以通过反引号来执行任何能产生输出的命令
    $cat test#!/bin/bash# reading value from a filefile="alphabet"for test in `cat $file`; doecho the next val is $testdone$./testthe next val is Athe next val is Bthe next val is C

(4)更改字段分隔符
bash中定义了特殊的环境变量IFS,称为内部字段分隔符。默认情况下,bash会将空格、制表符、换行符作为字段分隔符。
当我们在使用时,可以修改IFS的值已满足不同的情况。
修改IFS值格式,如:IFS=$'\n', IFS=:
一般情况下载处理长脚本时,需要先将IFS的值保存在临时变量中,在使用完后再恢复它:
    IFS.OLD=$IFSIFS=$'\n'<use the new IFS value in code>IFS=$IFS.OLD

如果需要多个IFS字符,只需将它们在赋值时串起来即可:IFS=$'\n:;"',这样就可以把换行、冒号、分好、双引号都作为字符按分隔符处理。
(5)使用通配符遍历目录
    $cat test#!/bin/bash#iterate through all the files in a directoryfor file in /home/test/* ; doif [ -d "$file" ]; thenecho "$file is a directory"elif [ -f "$file" ]; thenecho "$file is a file"fidone

linux中文件或目录中可以包含空格,所以file需要使用双引号"$file"。

2、循环处理文件数据

遍历存数在文件中数据:使用循环语句和IFS变量。
经典案例,处理/etc/passwd文件中的数据:
    #!/bin/bash#changing the IFS valueIFS.OLD=$IFSIFS=$'\n'for entry int `cat /etc/passwd`; doecho "val in $entry"IFS=:for value in $entry; doecho " $value"donedoneIFS=$IFS.OLD

这个脚本使用两个不同的IFS值来解析数据,第一个IFS解析出文件中单独的行,内部for循环将IFS的值修改为冒号,解析出每行中的数据。

转载于:https://www.cnblogs.com/hancq/p/5024561.html

shell脚本编程-结构化命令2-for命令相关推荐

  1. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter17-ChapterB )

    十七.创建函数 bash shell 提供了用户自定义函数功能,可以将 shell 脚本代码放入函数中封装起来. 函数是一个脚本代码块,你可以为其命名并在脚本中的任何位置重用它.每当需要在脚本中使用该 ...

  2. shell脚本编程学习笔记6(xdl)——字符串截取命令

    shell脚本编程学习笔记6--字符串截取命令 1,cut命令 [root@localhost ~]# cut [选项] 文件名-f 列号,表示提取第几列-d 分隔符,按照指定的分隔符分割列注意:默认 ...

  3. shell基础04 结构化命令

    几乎和别的编程语言思想一样,只是关键字写法稍有不同.总结主要包括如下几种:if-then,for,while 1. if-then 格式: if command    #根据command的状态码是否 ...

  4. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  5. 《Linux命令行与shell脚本编程大全 第3版》

    第一部分 Linux 命令行 第1章  初识Linux she 1.1   什么是Linux 2 1.1.1 深入探究Linux 内核 3 1.1.2 GNU 工具 6 1.1.3 Linux 桌面环 ...

  6. 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...

  7. 《Linux命令行与shell脚本编程大全》(第三版)读书笔记

    第一部分 Linux命令行 第三章.基本的bash shell命令 bash手册 man 命令 例子: man cat 空格翻页.回车下一行.左右键看右侧(左侧)内容.q退出 info info in ...

  8. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter1-Chapter16 )

    一.初识 Linux shell Linux 系统可划分为以下 4 部分. Linux 内核 GNU 工具 图形化桌面环境 应用软件 内核主要负责以下 4 种功能. 系统内存管理 内核通过硬盘上称为交 ...

  9. 《Linux命令行与shell脚本编程大全》笔记一

    第一章 初始 Linux shell Linux内核主要四种功能: 1.系统内存管理 2.软件程序管理 3.硬件设备管理 4.文件系统管理 shell:交互工具. 第三章 基本的bash shell ...

最新文章

  1. python示例异常处理与程序调试_笔记:Python异常处理与程序调试
  2. python统计元素个数_python怎么统计列表中元素的个数
  3. 台大林轩田《机器学习基石》系列课程教材的习题更新完毕了
  4. 语法制导的三地址代码生成程序_ts-creator, 一个生成代码生成器的代码生成器
  5. C语言 链表实现学生管理系统(含文件读写操作)
  6. java io字符输出流_JAVA IO 字符输入流与输出流总结说明
  7. w3c html5 客户端缓存数据格式,Html5应用程序缓存(Cache manifest)
  8. vue create 新项目时,命令行工具卡死(npm卡死)
  9. 一个常见的下拉框(css)
  10. (转)ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
  11. 计算机系统的软件配置要求高吗,ERP软件对电脑配置有什么要求?
  12. 信号与系统实验八 音频信号的时域、频域观测分析与图像的幅频相频重构
  13. Paper reading:高分辨率图像分割:From Contexts to Locality: Ultra-high Resolution Image Segmentation ICCV2021
  14. 短视频直播怎么搭建_直播平台搭建流程
  15. 从街舞导师王一博.fans机舱生日趴,看“线上应援”新形式
  16. 【JZOJ 4623】搬运干草捆
  17. 从贫穷到富有——我的修行之路
  18. 傲腾这么厉害?QLC闪存笑了!
  19. java bidi_Java Bidi類代碼示例
  20. 刚入门的自媒体人,也能给视频配上好听的声音

热门文章

  1. python自学平台-Python学习交流平台与教程推荐
  2. 零基础学python需要多久-零基础学习Python大概要多久,感悟分享?
  3. python画直方图成绩分析-python plotly绘制直方图实例详解
  4. python在线编译-python在线编译器的简单原理及简单实现代码
  5. python使用界面-用python制作用户图形界面
  6. python文字教程-Python
  7. python装饰器-如何理解Python装饰器?
  8. python怎么画条形图-如何按python中的值分组绘制条形图?
  9. 自学python还是报班-没有基础想学python为什么一定要报班?
  10. python 文字语音朗读-教你用 Python 来朗读网页