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