我正在尝试编写一个脚本,该脚本读取远程计算机的主机名,然后在以下命令中使用该结果。但是,该变量似乎已损坏。
这是发生的情况的示例:
sbaker@eye004:~/workspace/fire_trunk$ REMOTE_HOSTNAME="`ssh $REMOTE 'hostname'`"
sbaker@eye004:~/workspace/fire_trunk$ echo "before $REMOTE_HOSTNAME after"
打印(注意前缀空白):
" after sbaker-PC"
sbaker@eye004:~/workspace/fire_trunk$ echo $REMOTE_HOSTNAME
打印品:
"sbaker-PC"
我想知道为什么变量看起来不可用并且做奇怪的事情(如果后一个单词比前一个单词长,它将覆盖字符的顶部)。
我希望打印出第一个回显:
"before sbaker-PC after"
。我只是在做些愚蠢的事吗?
我正在Ubuntu 11上使用bash。
最佳答案
如果将其放入od -c
中,则会看到它实际上正在返回sbaker-PC\r
。末尾的CR使它在回显其余文本之前将光标返回到第一列,从而使“before”变得模糊。至于为什么要添加\r
,也许在另一侧提供主机名的文件是用DOS行尾(CRLF)而不是* nix行尾(LF)保存的。