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

经过前面几期的铺垫,终于可以开始shell的具体语法阶段了。这一期主要学习for循环语言法。主要分六个章节:

  1. for循环的一个铺垫:seq命令
  2. shell脚本的语法介绍
  3. for循环的两种语法
  4. for循环的例子(一)输出乘法口诀
  5. for循环的例子(二)创建一批文件并向里面写内容
  6. for循环的例子(三)输出刚才创建的文件内容

一、for循环的一个铺垫seq命令

-s 指定分隔符

-w 等宽输出用0填充

使用示例:

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脚本中几个特殊的指令,需要大家知道:

shell脚本中的注释是使用#开头的,鼓励写脚本时多写注释,注释最好写英文,因为很多Linux环境不一定支持中文,很有可能下次打开是乱码。

三、for循环的两种语法

2.1 基本语法

for 自定义变量名 in 元素列表;do
        ......
done

稍微解释一下,取元素列表中的成员,每取一个执行......位置所写的代码。直到取完结束。

下面列一下这种语法的常用格式:

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语法可以自行试一下。感谢大家的支持,抽空再继续。

展开阅读全文

页面更新:2024-04-09

标签:步长   注释   语法   详解   脚本   例子   命令   参数   代码   文件   内容   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top