![从 Putty 或 plink 执行时,Bash 的“read”命令会挂起](https://linux22.com/image/1626042/%E4%BB%8E%20Putty%20%E6%88%96%20plink%20%E6%89%A7%E8%A1%8C%E6%97%B6%EF%BC%8CBash%20%E7%9A%84%E2%80%9Cread%E2%80%9D%E5%91%BD%E4%BB%A4%E4%BC%9A%E6%8C%82%E8%B5%B7.png)
我正在尝试使用 putty 从 Windows 计算机在远程 Debian 服务器上执行本地 bash 脚本。该脚本非常简单:
#!/bin/bash
echo "Welcome."
read -p "Enter your name: " NAME
echo "Nice to see you, ${NAME}!"
直接从 debian 服务器执行时,该脚本运行良好。
我安装了 Putty(版本 0.73),以便能够通过运行以下 cmd 脚本来远程执行它:
@ECHO OFF
start /b putty -ssh -m "hello.sh" "server.example.com"
我也尝试过使用 plink:
@ECHO OFF
start /b plink -ssh -m "hello.sh" "server.example.com"
这两种方法都给出了相同的结果:脚本挂在指令上read
,我输入的任何内容似乎都不会改变 shell(甚至enter
或ctrl-c
)。提示甚至没有显示(但回显了“欢迎。”消息)。我唯一能做的就是关闭终端。
知道是什么原因导致了这个问题,以及如何解决它?
答案1
问题是您没有处于terminal
模式。油灰正在等待整行内容之后才显示它。
你必须跑油灰选择-t
https://the.earth.li/~sgtatham/putty/0.73/htmldoc/Chapter3.html#using-cmdline