在Linux开发中,经常会编写shell脚本来执行一些任务,通常是一个脚本只做一件事,随着任务的增加,脚本会越来越多,可复用的地方也会逐渐增加,这时就需要提取出脚本中的公共的功能放到一个通用的脚本中,其他脚本都能复用它
本篇文章介绍shell脚本中如何执行外部脚本,如何调用外部脚本中的函数,以及脚本复用相关的方法
执行外部脚本的方式
假如在当前目录有 a.sh 脚本,内容如下
- #!/bin/bash
- echo "a.sh…"
在一个脚本中执行外部脚本主要有以下几种方式
- source 外部脚本名字
在当前目录下的 b.sh 脚本,内容如下:
- #!/bin/bash
- source a.sh
- echo "b.sh…"
执行 ./b.sh,结果如下
- [root@ecs-centos-7 ~]# ./b.sh
- a.sh…
- b.sh…
脚本中 source a.sh 命令 会先执行当前目录下的 a.sh脚本,所以结果会先输出 a.sh…再输出 b.sh脚本本身的打印
- 点号 外部脚本名字
把 b.sh 脚本中执行a.sh脚本的语句修改成 点号 + 空格 + a.sh ,修改之后的脚本内容如下:
注意:点号和a.sh之间一定要加上空格,否则执行的时候会出错
- #!/bin/bash
- . a.sh
- echo "b.sh…"
执行 ./b.sh,结果如下
- [root@ecs-centos-7 ~]# ./b.sh
- a.sh…
- b.sh…
在上述脚本中, . a.sh 会先执行a.sh脚本, 结果会先输出 a.sh…再输出 b.sh…
- sh 外部脚本名字
sh 外部脚本名字 和 ./外部脚本名字 两种方式是一样的,选择哪一种方式都没问题,下面是以前面一种方式为例说明的
把 b.sh 脚本中 source a.sh修改成 sh a.sh ,修改之后的脚本内容如下:
- #!/bin/bash
- sh a.sh
- echo "b.sh…"
执行 ./b.sh 命令, 结果如下
- [root@ecs-centos-7 ~]# ./b.sh
- a.sh…
- b.sh…
可以看出,结果输出和上面两种方式是一样的