简单的说就是将一些shell的语法与命令写在里面,加上正则表达式,管道命令与数据流重定向等功能,以达到我们想要的目的。
shell scripts用在系统管理上是一个很好的工具,但是用在处理大量计算时,则速度不够,且使用的CPU资源较多。
一。第一个scripts编写与执行
假设的我们写的第一个scripts文件名为shell.sh,执行的方法有如下几种:
(1)直接命令执行:shell.sh文件要有rx(读与执行)的权限。
绝对路径:/home/chuiyuan/shell.sh
相对路径:在/home/chuiyuan下面,使用 ./shell.sh
变量PATH功能:将shell.sh放在PATH指定的路径下面,如 ~/bin(此目录要自己设置)
(2)以bash进行来执行:此时只要有读的权限就可。
通过bash shell.sh或者 sh shell.sh来执行。也就是告诉系统想要以bash的功能来执行这个文件内的命令。
shell文件可以使用 -n与 -x来查看语法。
例子:
第一行声明我们用的是bash语法,这句一定要有,它能够加载bash相关的配置文件(一般也就是non-login shell的~/.bashrc),并且执行bash来使我们的命令可以执行。要不然程序无法知道应该使用什么shell。
这里环境变量的设置是为了让程序在进行时可以直接执行一些外部命令,而不必写绝对路径。
最后一行表示离结束程序并回传一个0给系统,表示执行成功。我们还可以使用exit n 进行自定义。
注意,此时程序的权限是只读
所以只能使用bash来执行
要想使用直接路径来执行,则要更改权限
二。一些简单的scripts
(1)交互式脚本
(2)随日期变化创建文件
12行:如果fileuser为空,则filename变量为"filename",如果不为空,则为变量fileuser的值。
15行:${command),取得命令的结果
18行:拼接。
执行结果
三。scripts执行方式的不同(source,sh script, ./script)
(1)如果是直接执行的方式,或者是利用bash(sh) 来执行,系统会为这个script的开一个bash进行来执行。所以执行完毕后,子进程的变量都不再存在。
(2)如果使用source来执行,则在父进程中执行,所以数据都会在原bash中生效,这也是为什么我们不注销系统而要让修改后的~/.bashrc生效时,要使用source ~/.bashrc。