一个具有> 3.5K票数的StackOverflow 答案具有此一类功能,可用于分配给DIR
当前bash脚本的目录:
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
我对嵌套的双引号感到困惑。据我所知,以下片段被双引号括起来:
"$( cd "
"${BASH_SOURCE[0]}"
" && pwd )"
...,而=
()$( dirname
和()
)右边的其他所有内容均未引用。换句话说,我假设第二,第四和第六个"
字符分别“关闭”了第一,第三和第五个"
字符。
我知道"${BASH_SOURCE[0]}"
实现了双引号,但是其他两对双引号的目的是什么?
另一方面,(尽管获得较高的投票分数)上述片段不正确,那么实现其名义意图的正确方法是什么?
(按名义意图,我的意思是:将pwd
第一个cd
-ing 之后的返回值收集到由返回的目录中dirname "${BASH_SOURCE[0]}"
,并cd
在子外壳中执行-ing,以便$PWD
父外壳的保持不变。)
lsb_dist="$(. /etc/os-release && echo "$ID")"; echo "$lsb_dist"
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
也可以使用。
$( here, it's a subshell, but you are writing code as if you were writing it on the "first level" of the shell .... )
。