为什么我不能将 SSH 的结果连接到另一个变量?
Why can I not concatenate the result of an SSH to another variable?
我正在尝试以当前登录用户身份通过 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 时,却什么也没有显示?
由于您对 ssh
使用 -t
选项,因此输出在每行末尾包含回车符 return 和换行符(因为这是需要发送到一个终端)。 $(...)
自动删除最后一个 LF
字符,因此 $currentuser
以 CR
结尾。所以它打印 stat
命令的输出,然后是 CR
,然后是 @$ip
。 CR
将光标移动到行首,然后 @$ip
覆盖用户名。
最简单的解决方案是省略 -t
选项(这两个选项 -- 我不知道您为什么使用它两次)。您的命令不需要伪终端 运行.
我正在尝试以当前登录用户身份通过 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 时,却什么也没有显示?
由于您对 ssh
使用 -t
选项,因此输出在每行末尾包含回车符 return 和换行符(因为这是需要发送到一个终端)。 $(...)
自动删除最后一个 LF
字符,因此 $currentuser
以 CR
结尾。所以它打印 stat
命令的输出,然后是 CR
,然后是 @$ip
。 CR
将光标移动到行首,然后 @$ip
覆盖用户名。
最简单的解决方案是省略 -t
选项(这两个选项 -- 我不知道您为什么使用它两次)。您的命令不需要伪终端 运行.