如何在bash shell脚本中包含文件

时间:2012-05-30 20:19:03

标签: linux bash include

有没有办法在shell脚本中包含另一个shell脚本才能访问其功能?

就像在PHP中一样,你可以将include指令与其他PHP文件一起使用,以便通过调用函数名来运行其中包含的函数。

5 个答案:

答案 0 :(得分:154)

简单地放入你的脚本:

source FILE

或者

. FILE

这是一回事。

$ LANG=C help source
source: source filename [arguments]
Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

答案 1 :(得分:30)

是的,使用source或仅.的简短形式:

. other_script.sh

答案 2 :(得分:27)

以上答案是正确的,但如果在其他文件夹中运行脚本,则会出现问题。

例如,a.shb.sh位于同一文件夹中, a包括. ./b.sh包括b。

当从文件夹中运行脚本时,例如使用xx/xx/xx/a.sh,文件b.sh将找不到:./b.sh: No such file or directory

我用

. $(dirname "$0")/b.sh

答案 3 :(得分:4)

语法为source <file-name>

例如source config.sh

脚本-config.sh

USERNAME="satish"
EMAIL="satish@linuxconcept.com"

通话脚本-

#!/bin/bash
source config.sh
echo Welcome ${USERNAME}!
echo Your email is ${EMAIL}.

您可以学习include a bash script in another bash script here

答案 4 :(得分:0)

在我的情况下,为了将color.sh中相同目录中的init.sh包括在内,我必须执行以下操作。

. ./color.sh

不确定为什么直接使用./而不是color.shcolor.sh的内容如下。

RED=`tput setaf 1`
GREEN=`tput setaf 2`
BLUE=`tput setaf 4`
BOLD=`tput bold`
RESET=`tput sgr0`

使用File color.sh不会出错,但是颜色不会显示。我已经在Ubuntu 18.04中对此进行了测试,而Bash的版本是:

GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)