Bash脚本调用另一个Bash脚本时的回声问题

时间:2019-07-01 15:10:54

标签: linux bash echo

我有一个非常简单的Bash脚本,该脚本使用nc.traditional打开端口9999(因为nc不再具有-e参数),然后使用{{1}调用另一个Bash脚本}的nc.traditional参数。第二个脚本的目的是询问连接到该端口上的Linux机器的用户的名称 age ,并将这些信息存储在两个单独的文件中。 / p>

一切正常,除了我打算在某人进入其年龄时关闭-e,这就是导致失败和错误的原因。据我所知,这可能是由于echo造成的,或者是我不知道的其他原因。

当另一个脚本调用该脚本时,显然无法使用file descriptors命令的-s开关。

在第二个脚本中使用read会导致在第一个脚本的输出中出现“ stty:'标准输入':设备的不适当的ioctl”错误。

我还想为我的提示定义一个超时,以便用户不会停止我的资源。当stty -echo命令被另一个脚本召唤时,它也将不起作用。

第一个Bash脚本:

timeout

第二个Bash脚本:

#!/bin/bash
while true; do
    nc.traditional -n -l -p 9999 -e ./NameAge.sh
    sleep 5
done

如果您能帮助我解决这个问题,我非常感谢。

预先感谢

1 个答案:

答案 0 :(得分:0)

问题是您(服务器)无法控制连接人员(客户端)的终端,因此您需要关闭回显才能执行所需的操作。我认为这没有解决之道。您可以使用转义码进行响应以清除上一行,但这要等到用户按Enter才起作用。