KIt*_*tis 97 bash shell terminal ksh sh
我只是想了解shell中的以下代码行.它用于获取当前工作目录.我知道$(variable)名称返回变量名称中的值,但$(command)应该返回什么?它在执行命令后返回值吗?在这种情况下,我们可以`用来执行命令.
CWD="$(cd "$(dirname $0)"; pwd)"
Run Code Online (Sandbox Code Playgroud)
在不同版本的shell中也可以从以下代码行获取相同的输出
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Run Code Online (Sandbox Code Playgroud)
我无法理解的含义$(cd..和$(dirname.
有人可以帮我弄清楚这个命令是如何执行的吗?
Eri*_*ban 104
使用之$类${HOME}给出了HOME的价值.使用$类似$(echo foo)意味着运行子shell中括号内的任何内容并将其作为值返回.在我的例子,你会得到foo,因为echo会写foo到标准输出
dev*_*ull 20
Run Code Online (Sandbox Code Playgroud)DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"有人可以帮我弄清楚这个命令是如何执行的吗?
让我们看一下命令的不同部分.BASH_SOURCE是包含源文件名的bash数组变量.所以"${BASH_SOURCE[0]}"会返回脚本文件的名称.
dirname是GNU coreutils提供的实用程序,它从文件名中删除最后一个组件.因此,如果您通过说bash foo,执行您的脚本,"$( dirname "${BASH_SOURCE[0]}" )"将返回..如果你说bash ../foo,它会回来..; 因为bash /some/path/foo它回来了/some/path.
最后,整个命令"$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"获取包含被调用脚本的绝对目录.
$(...) 允许命令替换,即允许输出命令来替换命令本身并且可以嵌套.
| 归档时间: |
|
| 查看次数: |
47973 次 |
| 最近记录: |