繁体   English   中英

此shell脚本代码行是什么意思

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM