目录
文件包含source
Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。
Shell 文件包含的语法格式如下:
. filename # 注意点号(.)和文件名中间有一空格
或
source filename
将filename里面的代码加载进来,如果filename是个.sh文件,会去执行这个.sh文件,并将里面的变量的也加载进来了。
实例
实例1:
创建两个shell脚本文件, test.sh 和test1.sh
其中test.sh里面的代码为:
#!/bin/bash
cd $(dirname `ls -l $0 | awk '{print $NF;}'`)
WK_DIR=`pwd`
shell_trap=${WK_DIR}/test1.sh
echo ${shell_trap}
source ${shell_trap} #source命令
其中test1.sh中的内容为:
#!/bin/bash
echo "hello source .sh file"
在终端中执行 sh test.sh ,结果输出为:
/tmp/test1.sh
hello source .sh file
可以看到,source 执行了test1.sh的运行。
创建两个 shell 脚本文件。
test1.sh 代码如下:
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
url="http://www.runoob.com"
test2.sh 代码如下:
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
#使用 . 号来引用test1.sh 文件
. ./test1.sh
# 或者使用以下包含文件代码
# source ./test1.sh
echo "菜鸟教程官网地址:$url"
接下来,我们为 test2.sh 添加可执行权限并执行:
$ chmod +x test2.sh
$ ./test2.sh
菜鸟教程官网地址:http://www.runoob.com
set 命令
set -o pipefail
用来解决这种情况,只要一个子命令失败,整个管道命令就失败,整个脚本就会终止执行。
相对而言
使用command || true
,使得该命令(注意只是该命令)即使执行失败,脚本也不会终止执行。
参考:
菜鸟教程