为什么我不能将SSH的结果连接到另一个变量?

时间:2015-01-11 21:42:27

标签: macos bash ssh

我尝试以当前登录用户身份登录到计算机。因此:

#!/bin/bash

ip="[ip-redacted]"
currentuser=$(ssh -t -t macuser@$ip "stat -f '%Su' /dev/console")
echo $currentuser # prints "macuser"
echo "$currentuser" # same as above
echo "$currentuser""@$ip" # prints "@[ip-redacted]"

为什么当我单独打印currentuser时会打印出正确的用户,但是当我尝试将它附加到ip时它会显示为什么?

1 个答案:

答案 0 :(得分:4)

由于-t选项使用ssh,因此输出包含每行末尾的回车符和换行符(因为这是需要发送到终端的内容)。 $(...)会自动删除最后一个LF字符,因此$currentuserCR结尾。因此,它打印stat命令的输出,然后是CR,然后是@$ipCR将光标移动到行的开头,然后@$ip覆盖用户名。

最简单的解决方案是省略-t选项(两者都有 - 我不知道你为什么两次使用它)。您正在运行的命令不需要伪tty。