我无法理解bash中的以下代码。
set `pwd` ; mfix=$1
它实际上获取了运行目录名称。但我不知道它是如何工作的。 什么是set命令意味着什么?
答案 0 :(得分:5)
来自set
的{{3}}:
这个内置非常复杂,值得拥有自己的部分。组 允许您更改shell选项的值并设置 位置参数,或显示shell的名称和值 变量
e.g。
set v1 v2 v3 ; echo $1
将打印
v1
内部反引号中的命令被称为“命令替换”。来自doc:
Bash通过执行命令并替换来执行扩展 命令用命令的标准输出替换,用any 尾随新行已删除。
在您的示例中,将第一个位置参数$1
设置为为反引号内执行命令的结果的值。 (称为命令替换)。该命令是pwd
显示当前工作目录的命令。
无论如何,如果目录的路径包含空格,$1
将仅获取路径的第一部分。例如
$ pwd
/some/path with/space
$ set `pwd`
$ echo $1
/some/path
$echo $2
with/space
最后以上所有都是奇怪的设计,因为你可以简单地说:
mfix=$(pwd) #old school: mfix=`pwd`
最好使用$(command)
代替反对。
答案 1 :(得分:2)
bash中的这段代码将命令pwd
的结果放在变量mfix中。
您可以通过运行
打印mfix变量的结果echo $mfix