范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

每天2分钟学习unixlinux系统shell编程(九)for循环详解

  经过前面几期的铺垫,终于可以开始shell的具体语法阶段了。这一期主要学习for循环语言法。主要分六个章节:for循环的一个铺垫:seq命令shell脚本的语法介绍for循环的两种语法for循环的例子(一)输出乘法口诀for循环的例子(二)创建一批文件并向里面写内容for循环的例子(三)输出刚才创建的文件内容一、for循环的一个铺垫seq命令命令:seq作用:输出有序的序列选项:
  -s 指定分隔符
  -w 等宽输出用0填充参数:后面跟上序列的起和止,中间可以跟上步长值,步长默认是1
  使用示例:root@debian:~/test# seq 1 5 1 2 3 4 5 root@debian:~/test# seq -s " " 1 5 1 2 3 4 5 root@debian:~/test# seq -w 1 13 01 02 03 04 05 06 07 08 09 10 11 12 13 root@debian:~/test# seq -w 1 3 13 01 04 07 10 13 root@debian:~/test# 二、shell脚本的语法介绍
  shell脚本固定格式:#!/bin/sh 命令一 命令二 命令三 ......
  上是面shell最基本的格式。第一行是指定使用哪个shell来解释这个脚本,如果像示例中使用的/bin/sh则是使用系统默认的。可以通过ls -l /bin/sh看具体指向是哪个shell,其它选项可以指定/bin/bash, /bin/csh,/bin/ksh,一般常见就是bash,当然也可直接使用系统默认的。
  shell脚本中几个特殊的指令,需要大家知道:$@: 所有命令行传入的参数或者给函数传入的参数内容$#: 传入参数的个数$0: 文件名,是指这个脚本的名字$n: 取传入的参数的第几个参数的内容。$*: 所有命令行传入的参数或者给函数传入的参数内容
  shell脚本中的注释是使用#开头的,鼓励写脚本时多写注释,注释最好写英文,因为很多Linux环境不一定支持中文,很有可能下次打开是乱码。三、for循环的两种语法2.1 基本语法for 自定义变量名 in 元素列表;do         ...... done
  稍微解释一下,取元素列表中的成员,每取一个执行......位置所写的代码。直到取完结束。
  下面列一下这种语法的常用格式:for line in $(ls) #对ls的结果进行循环执行for file in /home/test/* #对/home/test/下所有的文件和文件夹执行循环for n in $(seq 1 10) #对1-10中每一个数据进行循环,刚才已经讲到过。for log in /log/*.log #对/log/目录中所有以.log结尾的文件进行循环。for n in {1…10} #对1-10中每一个数据进行循环for Iine in $(< file) #对file文件中的内容每一行执行循环for arg in "$@" #对传入的参数进行循环2.2 bash支持的语法#!/bin/bash for ((i=1; i<10; i++));do         echo $i done
  上面就是类C的循环语法。也很常用。四、for循环的例子(一)输出乘法口诀
  直接上代码:#!/bin/bash  for ((i=1; i<10; i++));do 	for ((j=1; j<=i; j++));do 		echo -en "$j*$i=$((i*j))	" 	done 	echo "" done
  上面的代码使用vi在终端创建一个test.sh,然后使用chmod +x test.sh给予可执行权限。然后执行./test.sh就能看到以下效果:root@debian:~/test/test# ./test.sh  1*1=1	 1*2=2	2*2=4	 1*3=3	2*3=6	3*3=9	 1*4=4	2*4=8	3*4=12	4*4=16	 1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	 1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	 1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	 1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	 1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
  解释:echo -n是输出但不换行,-e是把转义的	输出为制表符。echo ""就是换行的意思。经过双层for循环输出完整9*9乘法口诀表。
  大家看到了,我一般写代码喜欢节省代码行数,这样的习惯是想尽量让代码更简洁。行数更少,便于阅读,突出核心代码。你试想一下,假如你看代码几乎所有行都是换行,do,{,},done这些看着方便呢,还是说我一看就知道重点是在:echo -en这一行。这是个个人习惯。当然可能对需要按行数算kpi绩效的公司企业就另当别论了。五、for循环的例子(二)创建一批文件并向里面写内容
  直接上代码:#!/bin/bash  for n in $(seq 1 10);do 	echo "test test$n" > file_$n done
  上面的代码使用vi在终端创建一个test2.sh,然后使用chmod +x test2.sh给予可执行权限。然后执行./test2.sh就会创建出以下文件,并写了test test$n的内容:file_1  file_10  file_2  file_3  file_4  file_5  file_6  file_7  file_8  file_9六、for循环的例子(三)输出刚才创建的文件内容
  直接上代码:#!/bin/bash  for f in $(ls file_*);do 	cat $f	 done
  上面的代码使用vi在终端创建一个test3.sh,然后使用chmod +x test3.sh给予可执行权限。然后执行./test3.sh就会输出每个file开头的文件内容:root@debian:~/test/test# ./test3.sh  test test1 test test10 test test2 test test3 test test4 test test5 test test6 test test7 test test8 test test9
  这一期就分享到这里,其它的for语法可以自行试一下。感谢大家的支持,抽空再继续。

马相伯我是一条狗,叫了一百年,也没有叫醒中国人我是一条狗,叫了一百年,也没有叫醒中国人,当马相伯在百岁寿辰时说出这句名言时,他一定是带着深深的忧虑和无奈之情。作为一位伟大的教育家和社会活动家,他毕生致力于推进中国教育和社会进步国足抽签形势不利,或遭遇世界杯16强世预赛苦主,出线又难了国足又要悬!抽签形势不利,或遇世界杯16强世预赛苦主,出线太难这两年中国男足可谓是屡屡遭受到重创,先是在世预赛上无缘晋级。之后在管理层方面,更是发生了堪称地震级别的大变动。这一切事马斯克背大锅?推特被曝12月收入和利润皆下降40CNMO新闻近日,据CNMO了解,相关消息人士透露称,推特在12月的总收入和调整后利润皆下跌了40。值得一提的是,推特首席执行官马斯克曾在11月警告Twitter可能会破产,但他后东海小岛与时代浪花的对话编者按非凡十年奋进路,万里海防风鹏举。随着强军步伐的不断迈进,边海防建设日新月异,新时代边关焕发新面貌。东部战区海军某观通旅所属部队驻守多个海岛,漫长的海防线上,一代代官兵栉风沐雨国乒2人达到国际水准,林诗栋喜上加喜,王艺迪有望冲击世界第一前言国乒男女队的2位天才达到了国际一流的水平,并且实力上更是有望去超越孙颖莎跟马龙的地位。接下来的大赛帮助刘国梁跟我们男乒队伍当中,跟女乒的比赛包揽冠军,对我们中国比赛的乒乓球大赛第23届桂林五人制足球赛3月6日起开始报名桂林足球的经典品牌赛事广大足球迷期待已久的桂林五人制足球赛,在受新冠疫情影响停办两年后终于回归了。记者从桂林市体育局了解到,第23届桂林五人制足球赛将于3月29日重燃战火,赛事报名吴兴涵被实名举报涉中超假球最近,吴兴涵事件女主在社交媒体上公开实名举报一名中超球员参与假球行为。她在微博上称,这名球员曾多次向她提出要求参与假球,并以高额报酬为诱饵。甚至用我告诉你,你买,敢吗,挣钱老快了,不是林高远,不是陈幸同,为什么教练组执着于樊振东打混双?新加坡大满贯最后的几张外卡公布了混双王曼昱樊振东,女双陈梦王艺迪获得参赛资格。前不久在直通赛混双夺冠的林高远陈幸同反而没有机会,一时间争议不断!那为什么不给林高远和陈幸同机会呢?为场面壮观!上千只盘羊现身帕米尔高原来源人民网新疆频道近日,上千只马可波罗盘羊现身新疆帕米尔高原觅食,现场画面十分壮观。上千只马可波罗盘羊现身新疆帕米尔高原。塔叶尔江克力木江摄此次发现盘羊活动的区域在塔什库尔干塔吉克小米13魅族20,对比参考!型号小米13魅族20处理器骁龙8Gen2骁龙8Gen2运存LPDDR5XLPDDR5X内存UFS4。0UFS4。0屏幕6。36英寸三星E6直屏120Hz刷新率DCIP3局部峰值亮度斯科尔斯批评利桑德罗他不应该挡住德赫亚视线,那是在犯罪直播吧3月6日讯曼联07惨败利物浦的比赛中,加克波帮助红军首开纪录。中场休息评球阶段,斯科尔斯批评了利桑德罗马丁内斯的这次防守。斯科尔斯说我当然不认为这对德赫亚有帮助,我不认为他站
沈运策10。24黄金冲高回落还会涨吗?今日黄金走势分析周一(10月24日)亚市盘中,美元指数自早盘低点111。39大幅反弹,目前升至112。23,较低点大涨逾80点现货黄金上演高台跳水,目前金价已经跌破1655美元盎司,自日内高点大跌A股3000点的爱恨情仇2007年2月16号,A股首次突破3000点,虽然最后收盘价为2998,但是这是历史上的第一次2008年4月至6月,印花税行情触发3000点保卫战保卫战是否成功否沪指首次跌破300越南恒大爆雷,房地产怎么就绷不住了?受房地产爆雷影响,越南股债汇三杀!越南房地产似乎正在重蹈中国房地产的覆辙!在经济发展模式上,中越两国有着巨大的相似之处,越南革新开放几乎就是中国改革开放的复刻版。在过去30余年里,广州黄埔这里,也有个小鸟天堂位于广州市黄埔区的南岗河全长20多公里,由源头木强水库一路向南,流经长岭居生态居住区文教园区广州科学城广州经济技术开发区东区,汇入东江北干流。目前,南岗河已建成碧道10多公里,两岸斯诺克最新世界排名出炉赵心童仍居中国选手首位丁俊晖跌至第38名来源中国新闻网中新社北京10月24日电北京时间24日晨,2022年斯诺克北爱尔兰公开赛落幕,斯诺克最新世界排名也随之出炉。位居第8的赵心童依然排名中国球员之首,中国台球一哥丁俊晖跌品诗意风景看美好信阳信阳文旅融合高质量发展纪实秋染大别山,游在信阳,一城山水一程美。乌桕红银杏黄苍松劲,山色斑斓浉河清南湾阔溪流缓,水光潋滟。细品慢看探寻,信阳有诗意山水,是红色沃土,似梦里老家。老区红生态绿现代灰三色交织,行四川甘孜拍到日照金山,泸定地震也曾出现过,前几日还出现了佛光10月23日,一名到四川甘孜旅游的网友在社交平台上分享了自己拍摄到的日照金山。男子是到当地旅游,当时郑先生在四川甘孜贡嘎雪山的子梅垭口这个地方看到了日照金山,场面十分震撼。刚开始白上海将新建4座火车站!其中一座在崇明,还有一条线串起浦东机场和迪士尼花更少的时间,走更远的路,喜欢坐火车旅游的上海人又有福音了!来自上海交通的消息上海将新建4座火车站近日,沪渝蓉沿江高铁上海至南京至合肥段初步设计获得批复。这条高铁将为上海带来上海宝贵阳是非常适合居住的好地方走遍了中国大部分城市,领略了每一座城的风土气息,终究情归贵阳。个人始终认为贵阳是非常适合人居住的好地方,媒体报道候鸟式养老夏季栖息地贵阳排名第二。贵阳?很多网友可能是第一次听到这个全球最大乐高乐园纽约乐高乐园纽约乐高乐园位于纽约上州哈德逊山谷的戈申,是默林娱乐在美国东北部第一个美国第三个全球第九个园区,也是全世界规模最大的园区。这是四十年来美国东北部地区新建的首个大型主题乐园。乐园占地这块古怪奇特的碑文,你可曾见过,初看一头雾水,细审则别有洞天昨天看到有人发的一张碑刻图片,甚是古怪奇特。据发图人说,出去游览时,在一景区发现了一块怪碑,字形奇特,结构夸张,从未见过,试读一下,未能读通。乍一看是令人一头雾水,不知所云,以为是