我正在尝试编写一个脚本,该脚本读取远程计算机的主机名,然后在以下命令中使用该结果。但是,变量似乎已损坏或其他。
以下是正在发生的事情的一个例子:
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。
答案 0 :(得分:5)
如果你通过od -c
,你会发现它实际上正在返回sbaker-PC\r
。最后的CR导致它在回显文本的其余部分之前将光标返回到第一列,模糊了“之前”。至于为什么它正在添加\r
,也许在另一边给出主机名的文件用DOS行结尾(CRLF)而不是* nix行结尾(LF)保存。