我尝试以当前登录用户身份登录到计算机。因此:
#!/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时它会显示为什么?
答案 0 :(得分:4)
由于-t
选项使用ssh
,因此输出包含每行末尾的回车符和换行符(因为这是需要发送到终端的内容)。 $(...)
会自动删除最后一个LF
字符,因此$currentuser
以CR
结尾。因此,它打印stat
命令的输出,然后是CR
,然后是@$ip
。 CR
将光标移动到行的开头,然后@$ip
覆盖用户名。
最简单的解决方案是省略-t
选项(两者都有 - 我不知道你为什么两次使用它)。您正在运行的命令不需要伪tty。