ssh远程命令不能按预期工作(读取问题)

我的服务器上有一个名为test.sh的脚本:

 #!/bin/bash read -p "Select an option [1-4]: " option echo "You have selected $option" 

当我通过手动运行ssh时,我看到了这一点:

 me@me:~$ ssh root@server root@server's password: [...] root@server:~# bash test.sh Select an option [1-4]: 48 You have selected 48 

当我运行它作为SSH远程命令,我看到这一点:

 me@me:~$ ssh root@server 'bash test.sh' root@server's password: 48 You have selected 48 

我不满意这个输出,因为它缺lessSelect an option [1-4]:提示string和从我派生的原始脚本test.sh包含了很多这样的交互式对话string,我需要他们。

我知道read打印提示到stderr所以我试图用以下命令启动脚本,以防stderr被省略,但输出保持不变:

 ssh root@server 'bash test.sh >&2' ssh root@server 'bash test.sh' >&2 ssh root@server 'bash test.sh 2>&1' ssh root@server 'bash test.sh' 2>&1 

为什么会发生这种情况,以及如何使SSH远程命令按预期工作?

UPD

我已经将test.sh更改为:

 #!/bin/bash echo Connected read -p "Select an option [1-4]: " option echo "You have selected $option" 

但输出仍然缺less提示string:

 me@me:~$ ssh root@server 'bash test.sh' root@server's password: Connected 66 You have selected 66 

您需要在ssh使用-t选项来为ssh会话分配一个伪终端:

 ssh -q -t root@server 'bash test.sh'