[英]What does this shell script line of code mean
我需要一些帮助来理解以下shell脚本行,
apphome = "`cd \`dirname $0\` && pwd && cd - >/dev/null`"
我所了解的是,这正在创建一个名为apphome的变量。
这不是有效的外壳代码。
外壳不允许在=
周围有空格
对于其余的东西,虽然这看起来似乎是无效的,但它尝试将cd
转到脚本本身的目录,显示当前目录,最后将cd
返回到最新的cd
位置,将其标准输出STDOUT
重定向到/dev/null
垃圾箱(没有任何意义,当失败时, cd
仅在标准错误STDERR
上显示,从不在STDOUT
)
如果您想以适当的简单方式来执行此操作:
apphome="$(dirname $0)"
这就是您所需要的。
注意
反引号
`
用于旧式命令替换,例如
foo=`command`
的
foo=$(command)
建议改用语法。 $()中的反斜杠处理不足为奇,而$()更易于嵌套。 参见http://mywiki.wooledge.org/BashFAQ/082
似乎将命令分配给“ apphome”变量。 该命令可以稍后执行。 dirname返回文件名的目录部分。 $ 0是该行包含的脚本的名称(如果我没记错的话)。 现在,执行dirname <name>
将返回目录,而cd将使用该值。 因此,它将假设一行中的每一个都成功执行此行中的三个命令。 这些命令是:
cd `dirname [name of the script]` pwd cd -
第一个命令将目录更改为包含脚本的目录; 第二个将打印当前目录; 第三将带您回到原始目录。 第三个命令的输出将不会打印出来。 总之,它将打印出包含脚本的目录的名称,该脚本包含相关行。 至少,这就是我的理解方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.