回显中的bash脚本clobbering变量

时间:2011-07-08 04:00:18

标签: bash ssh sh

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

以下是正在发生的事情的一个例子:

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。

1 个答案:

答案 0 :(得分:5)

如果你通过od -c,你会发现它实际上正在返回sbaker-PC\r。最后的CR导致它在回显文本的其余部分之前将光标返回到第一列,模糊了“之前”。至于为什么它正在添加\r,也许在另一边给出主机名的文件用DOS行结尾(CRLF)而不是* nix行结尾(LF)保存。