Linux shell之for in的使用及说明

张开发
2026/4/3 11:58:00 15 分钟阅读
Linux shell之for in的使用及说明
一、语法1234for变量名in列表do程序段(command)done注意1是变量名而不是$变量注意2列表可以做文章二、应用第一类数字性循环--seq在in后面的应用123456#!/bin/bash#也是产生等差数列--默认是1foriin$(seq1 10)#产生的是一个字符串默认IFS是以空格隔开doecho$(expr$i \* 3 1);#主要是复习:expr乘法的特殊用法--空格隔开done补充产生[1,10]的自然数--{}在in后面的应用123456789101112131415total0#全局变量foriin{1..100}#..表示连续默认也是IFS为空格隔开do((totali))doneecho-etotal is:${total}#多行注释COMMENRforiinmysql_{0,1,4,12}sql#多个文件doecho$isamtools view -c $idoneCOMMENT第二类字符性循环最原始的123456#!/bin/bash#使用列表for循环显示周一到周日对应的英文--学习日期的英文fordayinMonday Tuesday Wednesday Thursday Friday Saturday Sundaydoecho$daydone变量的类型123456#!/bin/bashlistLinux Java C Pythonforiin$listdoecho-eLanguage is ${i}donecat在in后面的应用--逐行读取文件的内容(默认是IFS)所以不是逐行打印12345#!/bin/bashforiin$(cat日志颜色.sh)#注意:pwd当前目录下的文件doecho$idone思考如果想逐行原样输出123456789#!/bin/bash# reading content from a filefile日志文件.sh#将这个语句加入到脚本中告诉bash shell在数据值中忽略空格和制表,使其只能识别换行符!IFS$\nforstdin$(cat$file)doecho$stddone说明IFS的一些说明bash shell会将下列字符当作字段分隔符空格、制表符、换行符说明如果在shell在数据中看到这些字符中的任意一个它就会假定这表明了列表中一个新数据字段的开始参考的最佳安全实践在改变IFS之前保存原来的IFS值之后再恢复它。保证了在脚本的后续操作中使用的是IFS的默认值实现1234IFS.OLD$IFS#默认的IFS的数值--也是环境变量IFS$\n#自定义的IFS数值在代码中使用新的IFS值#待使用自定义IFS的部分IFS$IFS.OLD#恢复默认的IFS第三类路径查找ls在in后面的命令是--读取当前pwd下的文件(广义上)12345#!/bin/bashforiinls;#ls可以结合统配符应用doecho$i isfilename\! ;#注意:\的应用done用通配符读取目录(无命令)1234forfilein~/*;#一级目录下的内容--并不递归显示doecho$fileisfilepath \! ;#${file}代表的是文件的全路径done通过脚本传参12345678910#!/bin/bash#回忆1统计脚本参数的个数echoargument number are $##回忆2参数的内容--此处可以换成$来测试echothe input is $*#循环执行forargumentin$*;doecho$argument doneIFS内部字段分隔符需求如下1234#遍历一个文件中用冒号分隔的值--特殊文件--/etc/passwd文件等IFS#如果要指定多个IFS字符只要将它们在赋值行串起来就行。IFS$\n:;总结1234567#1从变量读取列表# 将一系列的值都集中存储在一个变量中然后需要遍历变量中的整个列表#2从命令读取值#有两种方式可以将命令输出赋值给变量# 1反引号字符# 2$()格式

更多文章