协慌网

登录 贡献 社区

如何从另一个 Shell 脚本调用一个 Shell 脚本?

我有两个 shell 脚本a.shb.sh

我怎么能叫b.sh从 shell 脚本中a.sh

答案

您可以通过两种不同的方法来执行此操作:

  1. 使其他脚本可执行, #!/bin/bash行,并在 $ PATH 环境变量中添加文件所在的路径。然后,您可以将其作为普通命令来调用;

  2. 或使用如下所示的source命令(别名是. )来source /path/to/script ;

  3. 或使用bash命令执行它: /bin/bash /path/to/script ;

第一个和第三个方法将脚本作为另一个过程执行,因此另一个脚本中的变量和函数将不可访问。
第二种方法在第一个脚本的过程中执行该脚本,并从另一个脚本中提取变量和函数,以便可以从调用脚本中使用它们。

在第二种方法中,如果您exit ,它将也退出第一个脚本。第一种和第三种方法不会发生这种情况。

看一下这个。

#!/bin/bash
echo "This script is about to run another script."
sh ./script.sh
echo "This script has just run another script."

您可以通过两种方法来执行此操作。终端执行脚本:

#!/bin/bash
SCRIPT_PATH="/path/to/script.sh"

# Here you execute your script
"$SCRIPT_PATH"

# or
. "$SCRIPT_PATH"

# or
source "$SCRIPT_PATH"

# or
bash "$SCRIPT_PATH"

# or
eval '"$SCRIPT_PATH"'

# or
OUTPUT=$("$SCRIPT_PATH")
echo $OUTPUT

# or
OUTPUT=`"$SCRIPT_PATH"`
echo $OUTPUT

# or
("$SCRIPT_PATH")

# or
(exec "$SCRIPT_PATH")

所有这些对于带空格的路径都是正确的!!!