回显中的bash脚本clobbering变量

Ste*_*ven 2 ssh bash sh

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

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

sbaker@eye004:~/workspace/fire_trunk$ REMOTE_HOSTNAME="`ssh $REMOTE 'hostname'`"
sbaker@eye004:~/workspace/fire_trunk$ echo "before $REMOTE_HOSTNAME after"
Run Code Online (Sandbox Code Playgroud)

打印(注意前缀空格): " after sbaker-PC"

sbaker@eye004:~/workspace/fire_trunk$ echo $REMOTE_HOSTNAME
Run Code Online (Sandbox Code Playgroud)

打印: "sbaker-PC"

我想知道为什么变量似乎无法使用并且做了奇怪的事情(如果后面的单词比之前的单词长,它会写在字符的顶部).我希望打印第一个回声:"before sbaker-PC after".

我只是在做一些愚蠢的事吗?我在ubuntu 11上使用bash.

Ign*_*ams 5

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