我有点疯了……
这是我所做的
echo `ssh [email protected]`
然后它要求输入密码,我输入了密码,然后它就卡在那里了。
我预计回声在这里被屏蔽了。这是正确的吗?
请逐步解释这里究竟发生了什么。
答案1
我预计回声在这里被屏蔽了。这是正确的吗?
命令替换总是在运行“最终”(在本例中为“外部”)命令之前进行处理。
因此echo
不是“被阻止”,而是等待命令替换中的命令完成其执行,但这永远不会发生,因为命令本身会产生一个ssh
交互式 shell。
您可以通过多种方式验证这一点,例如通过按Ctrl+ D、通过键入exit
并点击Enter或通过打开另一个终端实例并运行:
pkill -15 -x ssh
如您所见,ssh
以任何方式终止实例都会让命令替换完成其执行,最终让echo
命令在其输出上运行,在本例中为零。