我需要一些帮助来理解以下shell脚本行,
apphome = "`cd \`dirname $0\` && pwd && cd - >/dev/null`"
我理解的是,这是创建一个名为apphome的变量。
答案 0 :(得分:1)
这是不有效的shell代码。
shell不允许=
对于其余部分,虽然这看起来很糟糕,但它会尝试cd
到脚本本身的目录,显示当前的目录&最后cd
返回到最新的cd
位置,将标准输出STDOUT
重定向到/dev/null
垃圾箱(这没有任何意义,cd
仅显示在STDERR
上标准错误STDOUT
失败时,永远不会出现在apphome="$(dirname $0)"
)
如果你想以一种简单的方式做到这一点:
foo=`command`
这就是你所需要的一切。
注意强>
反引号
`
用于旧式命令替换,例如
foo=$(command)
在
{{1}}建议使用
语法。 $()内的反斜杠处理不那么令人惊讶,$()更容易嵌套。见http://mywiki.wooledge.org/BashFAQ/082
答案 1 :(得分:-1)
似乎将命令分配给“apphome”变量。此命令可以稍后执行。
dirname返回文件名的目录部分。 $ 0是此行包含的脚本的名称(如果我没有记错的话)。
现在,执行dirname <name>
将返回一个目录,cd将使用该值。
那么,它会做的是在行中执行三个命令,假设它们中的每一个都成功。命令是:
cd `dirname [name of the script]` pwd cd -
第一个命令会将目录更改为包含脚本的目录;第二个将打印当前目录;第三个将哟回到原始目录。不会输出第三个命令的输出。 总之,它将打印出包含包含相关行的脚本的目录名称。 至少,这就是我理解的方式。