我正在尝试编写一个脚本,该脚本读取远程计算机的主机名,然后在以下命令中使用该结果。但是,该变量似乎已损坏。

这是发生的情况的示例:

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)保存的。

09-30 21:18