shell 脚本的基本语法

时间:2022-08-26 15:34:29

1、for/do/done
Shell脚本的for循环结构类似于某些编程语言的foreach循环。
(1)for的固定循环,它的语法是:

for var in con1 con2 con3 ...
do
程序段
done

说明:这个 var1 var的内容是con1;
2)第二次循环时: varcon23 var的内容是con3;

【例】
shell 脚本的基本语法

注:$(seq 0 10)可表示0到10连续的数字。

(2)for循环的数值处理方式
语法如下:

for (( 初始值;限制值;执行步长))
do
程序段
done

【例1】
shell 脚本的基本语法

【例2】累加
shell 脚本的基本语法

2、while/do/done
【例】
shell 脚本的基本语法

3、位置参数和特殊变量
有很多特殊变量是被Shell自动赋值的,常用的位置参数和特殊变量有:
(1) 0Cmainargv[0]2 1、 2mainargv[1]argv[2]3 #:表示后接参数的个数。相当于C语言main函数的argc-1,注意这里的#后面不表示注释。
(4) @ 1”“ 2forin5 ?:表示上一条命令的Exit Status。
(6)$$:当前shell进程号。
【例】
shell 脚本的基本语法

注意:位置参数可以用shift命令左移。比如:shift3表示原来的 4 1,原来的 5 2等等,原来的 1 2、 3 0不移动,而不带参数的shift命令相当于shift1。
【例】
shell 脚本的基本语法

4、函数
Shell中的函数定义没有返回值,也没有参数列表。要注意:函数体的左花括号“{”和后面的命令之间必须要有空格或换行,如果将最后一条命令和右花括号“}”写在同一行,命令末尾必须有“;”号。定义函数不执行命令就像定义变量一样,调用函数时才执行命令,而调用函数不写括号。函数必须先定义后使用,一般把函数定义和其他命令放在脚本的最后。
Shell函数没有参数列表并不表示不能传递参数,事实上函数就像是迷你脚本,调用函数时可以传递任意参数,在函数内同样用 0 1、$2等变量来提取参数,函数中的参数相当于函数的局部变量。函数中可以用return命令返回,如果return后面跟一个数字则表示函数的Exit Status。

5、shell脚本的调试方法
(1)调试脚本的选项,如下所示:
1)-n:读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
【例】
shell 脚本的基本语法

2)-v:在执行script前,先将script的内容和结果输出到屏幕上。
【例】
shell 脚本的基本语法

3)-x:将使用到的script内容显示到屏幕上。
【例】
shell 脚本的基本语法

说明:加号后面的数据都是命令串,用户可以由此判断程序代码执行到哪一段时会出现相关的信息,就能够依据输出的错误信息来修改脚本。

(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来执行,则代表在子进程中执行。