当前位置: 首页 > news >正文

Linux shell之for in的使用及说明

一、语法

1

2

3

4

for变量名in列表

do

程序段(command)

done

注意1:是变量名而不是$变量!

注意2:列表可以做文章!

二、应用

第一类:数字性循环-->seq在in后面的应用

1

2

3

4

5

6

#!/bin/bash

#也是产生等差数列-->默认是1

foriin$(seq1 10)#产生的是一个字符串,默认IFS是以空格隔开!

do

echo$(expr$i \* 3 + 1);#主要是复习:expr乘法的特殊用法!-->空格隔开

done

补充:产生[1,10]的自然数-->{}在in后面的应用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

total=0#全局变量

foriin{1..100}#".."表示连续,默认也是IFS为空格隔开

do

((total+=i))

done

echo-e"total is:${total}"

#多行注释

<<COMMENR

foriinmysql_{0,1,4,12}sql#多个文件

do

echo$i

samtools view -c $i

done

COMMENT

第二类:字符性循环

最原始的

1

2

3

4

5

6

#!/bin/bash

#使用列表for循环显示周一到周日对应的英文-->学习日期的英文

fordayinMonday Tuesday Wednesday Thursday Friday Saturday Sunday

do

echo"$day"

done

变量的类型

1

2

3

4

5

6

#!/bin/bash

list="Linux Java C++ Python"

foriin$list

do

echo-e"Language is ${i}"

done

cat在in后面的应用-->逐行读取文件的内容(默认是IFS),所以不是逐行打印!

1

2

3

4

5

#!/bin/bash

foriin$(cat日志颜色.sh)#注意:pwd当前目录下的文件

do

echo$i

done

思考:如果想逐行原样输出

1

2

3

4

5

6

7

8

9

#!/bin/bash

# reading content from a file

file="日志文件.sh"

#将这个语句加入到脚本中,告诉bash shell在数据值中忽略空格和制表,使其只能识别换行符!

IFS=$'\n'

forstdin$(cat$file)

do

echo"$std"

done

说明:IFS的一些说明!

  • bash shell会将下列字符当作字段分隔符:空格、制表符、换行符
  • 说明:如果在shell在数据中看到这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始!

参考的最佳安全实践:在改变IFS之前保存原来的IFS值,之后再恢复它。

保证了:在脚本的后续操作中使用的是IFS的默认值

实现:

1

2

3

4

IFS.OLD=$IFS#默认的IFS的数值-->也是环境变量!

IFS=$'\n'#自定义的IFS数值

<在代码中使用新的IFS值>#待使用自定义IFS的部分!

IFS=$IFS.OLD#恢复默认的IFS

第三类:路径查找

lsin后面的命令是-->读取当前pwd下的文件(广义上)!

1

2

3

4

5

#!/bin/bash

foriin`ls`;#ls可以结合统配符应用!

do

echo$i isfilename\! ;#注意:\的应用!

done

用通配符读取目录(无命令)

1

2

3

4

forfilein~/*;#一级目录下的内容-->并不递归显示!

do

echo$fileisfilepath \! ;#${file}代表的是文件的全路径

done

通过脚本传参

1

2

3

4

5

6

7

8

9

10

#!/bin/bash

#回忆1:统计脚本参数的个数

echo"argument number are $#"

#回忆2:参数的内容-->此处可以换成$@来测试!

echo"the input is $*"

#循环执行

forargumentin"$*";

do

echo"$argument "

done

IFS:内部字段分隔符

需求如下

1

2

3

4

#遍历一个文件中用冒号分隔的值:-->特殊文件-->/etc/passwd文件等!

IFS=:

#如果要指定多个IFS字符,只要将它们在赋值行串起来就行。

IFS=$'\n':;"

总结

1

2

3

4

5

6

7

#(1)从变量读取列表

# 将一系列的值都集中存储在一个变量中,然后需要遍历变量中的整个列表

#(2)从命令读取值

#有两种方式可以将命令输出赋值给变量:

# (1)反引号字符(`)# (2)$()格式

http://www.jsqmd.com/news/581057/

相关文章:

  • 新手福音:通过快马ccswitch模型轻松生成你的第一个博客页面代码
  • 智能文档处理新范式:Umi-OCR双层PDF功能让家庭与学生文档管理效率倍增
  • Flowise环境搭建:Mac M1芯片适配安装指南
  • 2026年防火电缆桥架/热浸锌电缆桥架公司优选 适配工业消防与高腐蚀工程 - 深度智识库
  • 3分钟免费美化Windows鼠标指针:蔚蓝档案主题让你的桌面焕然一新
  • MSSQL性能调优实战:5分钟揪出CPU飙升的罪魁祸首SQL(附执行计划分析技巧)
  • 让AI当你的面试官:基于快马平台打造智能前端面试辅导助手
  • 2026年浙江好用的同步热分析仪品牌推荐,上海皆准仪器设备值得选吗 - 工业设备
  • OpenClaw镜像体验:在星图GPU平台快速试用SecGPT-14B安全分析
  • BEAST 2 终极指南:如何快速掌握贝叶斯分子进化分析工具
  • 嵌入式系统内存泄漏检测与优化实践
  • ModTheSpire全栈使用指南:从基础搭建到性能调优的进阶之路
  • 2026年安徽山东好用的同步热分析仪优质生产商排名,哪家性价比高 - 工业品网
  • 告别数据焦虑:用GetQzonehistory永久保存你的QQ空间回忆
  • 实战攻略:如何快速实现Figma界面全面汉化,告别英文困扰
  • 当plc编程遇见ai助手:用快马智能分析需求并生成优化控制方案
  • gcc编译与gdb使用
  • 从需求到代码:基于快马平台ai生成spring boot电商系统实战项目
  • 自用超香的 Navidrome 音乐库搭建分享,告别听歌各种糟心事!
  • YahooFinanceApi架构深度解析:构建高性能金融数据集成系统的终极指南
  • 用Open-Sora开启你的AI视频创作革命:文字转视频、图片转视频全解析
  • 企业网站SEO优化与内容营销的协同方式有哪些
  • B站视频转文字:如何用AI技术轻松提取视频内容?
  • 打开windows上的程序提示 windows无法打开此类型的文件(.exe),如何解决
  • CMake跨平台工程迁移:从Linux到Windows实战
  • 2026年苏锡常液位计检测厂家推荐,哪家靠谱怎么收费 - 工业品牌热点
  • PyTorch 3.0静态图训练成本失控?4个被92%团队忽略的torch.compile()副作用,立即修复可省$152K/月
  • Cyber Engine Tweaks:赛博朋克2077游戏增强框架的核心功能与应用指南
  • 使用cv_unet_image-colorization增强电商商品图像的实践
  • CasRel关系抽取完整流程:从原始文本清洗、NER预处理到SPO抽取