1、for/do/done
Shell脚本的for循环结构类似于某些编程语言的foreach循环。
(1)for的固定循环,它的语法是:
for var in con1 con2 con3 ...
do
程序段
done
说明:这个
2)第二次循环时:
…
【例】
注:$(seq 0 10)可表示0到10连续的数字。
(2)for循环的数值处理方式
语法如下:
for (( 初始值;限制值;执行步长))
do
程序段
done
【例1】
【例2】累加
2、while/do/done
【例】
3、位置参数和特殊变量
有很多特殊变量是被Shell自动赋值的,常用的位置参数和特殊变量有:
(1)
(4)
(6)$$:当前shell进程号。
【例】
注意:位置参数可以用shift命令左移。比如:shift3表示原来的
【例】
4、函数
Shell中的函数定义没有返回值,也没有参数列表。要注意:函数体的左花括号“{”和后面的命令之间必须要有空格或换行,如果将最后一条命令和右花括号“}”写在同一行,命令末尾必须有“;”号。定义函数不执行命令就像定义变量一样,调用函数时才执行命令,而调用函数不写括号。函数必须先定义后使用,一般把函数定义和其他命令放在脚本的最后。
Shell函数没有参数列表并不表示不能传递参数,事实上函数就像是迷你脚本,调用函数时可以传递任意参数,在函数内同样用
5、shell脚本的调试方法
(1)调试脚本的选项,如下所示:
1)-n:读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
【例】
2)-v:在执行script前,先将script的内容和结果输出到屏幕上。
【例】
3)-x:将使用到的script内容显示到屏幕上。
【例】
说明:加号后面的数据都是命令串,用户可以由此判断程序代码执行到哪一段时会出现相关的信息,就能够依据输出的错误信息来修改脚本。
(2)使用这些选项的方法
1)在命令行中提供参数,如:$sh -x ./script.sh 。
2)在脚本开头提供参数,如:#!/bin/sh -x 。
3)在脚本中用set命令启用或禁用参数
set -x和set +x分别表示1和禁用-x参数,这样可以只对脚本中的某一段进行跟踪调试。
6、重点回顾
(1)shell script 是利用shell的功能来写得一个“程序”,这个程序是使用纯文本文件,将一些shell的语法和命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想的处理目的。
(2)shell script用在系统管理上是一项很好的工具,但是用在处理大量数值运算上就不够好了,因为shell script的运行速度慢,而且占用的CPU资源较多,易造成主机资源分配不良。
(3)在shell script中,命令是从上到下,从左到右分析执行的。
(4)shell script的执行至少需要r权限,若想直接命令执行,则需要拥有r和x的权限。
(5)script若以source来执行时,则代表在父进程的bash内执行,若bash/sh来执行,则代表在子进程中执行。