此表达式检查是否HOSTNAME
未设置:
[ "x" = "x$HOSTNAME" ]
如果HOSTNAME
未设置,这最终看起来像:
[ "x" = "x" ]
哪个当然评估为true
. 表达方式:
[ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname`
将设置HOSTNAME
为env hostname
if 之前的表达式&&
is的输出true
。调用与调用env hostname
完全相同hostname
,只是输出本地主机的名称。
第二种表达方式:
NODENAME=rabbit@${HOSTNAME%%.*}
正在使用bash
变量扩展来剥离除主机名的第一个组成部分之外的所有内容。给定HOSTNAME="host.example.com"
,${HOSTNAME%%.*}
回报host
。您可以在bash
手册页中阅读更多内容:
${parameter%%word}
Remove matching suffix pattern. The word is expanded to produce
a pattern just as in pathname expansion. If the pattern matches
a trailing portion of the expanded value of parameter, then
the result of the expansion is the expanded value of parameter
with the shortest matching pattern (the ``%'' case) or the longest
matching pattern (the ``%%'' case) deleted.
所以这设置NODENAME
为rabbit@host
,假设您的本地主机名是host.example.com
。