Bash:如何

通常包含脚本的方式是“源”

例如:

main.sh:

#!/bin/bash

source incl.sh

echo "The main script"

incl.sh:

echo "The included script"

执行“./main.sh”的输出是:

The included script
The main script

...现在,如果您尝试从其他位置执行该shell脚本,除非它在您的路径中,否则无法找到包含。

确保脚本可以找到包含脚本的好方法是什么,特别是如果脚本需要可移植?


我倾向于使我的脚本都相对于彼此。 这样我可以使用dirname:

#!/bin/sh

my_dir="$(dirname "$0")"

"$my_dir/other_script.sh"

我知道我对派对迟到了,但无论你如何启动脚本并独占使用内置函数,这都应该起作用:

DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
. "$DIR/incl.sh"
. "$DIR/main.sh"

. (dot)命令是源的别名, $PWD是工作目录的路径, BASH_SOURCE是一个数组变量,其成员是源文件名, ${string%substring}剥离$ string后面的最短匹配


替代:

scriptPath=$(dirname $0)

是:

scriptPath=${0%/*}

..好处是没有依赖dirname,这不是一个内置的命令(并不总是在模拟器中可用)

链接地址: http://www.djcxy.com/p/56865.html

上一篇: Bash: How

下一篇: Error when running nohup in bash script