this="${BASH_SOURCE-$0}" bin=$(cd -P -- "$(dirname -- "$this")" && pwd -P) script="$(basename -- "$this")" this="$bin/$script"
上面是hadoop启动时的一段代码,这段逻辑也比较简单(this最终为该脚本的绝对物理位置),就是不明白,-P与dirname后面的--的作用是什么?
bash的man page是这么写的:
A -- signals the end of options and disables further option
processing. Any arguments after the -- are treated as filenames and
arguments. An argument of - is equivalent to --.
两个横线代表选项的结束,两个横线后面的部分都会被认为是参数了,而不再是前面的命令的选项了。
说明
BASH_SOURCE-$0 默认为 -bash dirname -bash 是会报错的,因为 dirname 没有 -bash这个选项。前面加-- 会把 “-bash" 当成 dirname 的参数,而不是选项,这样就不会报错了
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!