前言:
如今你们对“for循环的执行流程是怎样的请简单阐述”大约比较关注,我们都想要剖析一些“for循环的执行流程是怎样的请简单阐述”的相关知识。那么小编也在网摘上汇集了一些对于“for循环的执行流程是怎样的请简单阐述””的相关知识,希望各位老铁们能喜欢,大家快快来了解一下吧!经过前面几期的铺垫,终于可以开始shell的具体语法阶段了。这一期主要学习for循环语言法。主要分六个章节:
for循环的一个铺垫:seq命令shell脚本的语法介绍for循环的两种语法for循环的例子(一)输出乘法口诀for循环的例子(二)创建一批文件并向里面写内容for循环的例子(三)输出刚才创建的文件内容一、for循环的一个铺垫seq命令命令:seq作用:输出有序的序列选项:
-s 指定分隔符
-w 等宽输出用0填充
参数:后面跟上序列的起和止,中间可以跟上步长值,步长默认是1
使用示例:
root@debian:~/test# seq 1 512345root@debian:~/test# seq -s " " 1 51 2 3 4 5root@debian:~/test# seq -w 1 1301020304050607080910111213root@debian:~/test# seq -w 1 3 130104071013root@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/bashfor ((i=1; i<10; i++));do echo $idone
上面就是类C的循环语法。也很常用。
四、for循环的例子(一)输出乘法口诀
直接上代码:
#!/bin/bashfor ((i=1; i<10; i++));do for ((j=1; j<=i; j++));do echo -en "$j*$i=$((i*j))\t" 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是把转义的\t输出为制表符。echo ""就是换行的意思。经过双层for循环输出完整9*9乘法口诀表。
大家看到了,我一般写代码喜欢节省代码行数,这样的习惯是想尽量让代码更简洁。行数更少,便于阅读,突出核心代码。你试想一下,假如你看代码几乎所有行都是换行,do,{,},done这些看着方便呢,还是说我一看就知道重点是在:echo -en这一行。这是个个人习惯。当然可能对需要按行数算kpi绩效的公司企业就另当别论了。
五、for循环的例子(二)创建一批文件并向里面写内容
直接上代码:
#!/bin/bashfor n in $(seq 1 10);do echo "test test$n" > file_$ndone
上面的代码使用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/bashfor 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 test1test test10test test2test test3test test4test test5test test6test test7test test8test test9
这一期就分享到这里,其它的for语法可以自行试一下。感谢大家的支持,抽空再继续。
标签: #for循环的执行流程是怎样的请简单阐述