stdin从这里的doc不打印到屏幕?



我有一个交互式登录用户的程序。我使用了heredoc来自动化这个过程。

./login <<EOF
user1@test.com
password
EOF

我期望输出是这样的。这是当我在没有heredoc的情况下运行程序并输入用户名和密码时显示的结果。

$ ./login
Enter your email: user1@test.com
Enter your password: password
Successfully logged in.

然而,我只看到了这个。

$ ./login
Enter your email: 
Enter your password: 
Successfully logged in.

如您所见,尽管程序似乎正确地获得了标准输入,但所有的herdoc输入都没有打印出来。这是什么原因呢?如果我还能看到这些输入来帮助我调试问题,那就太好了。谢谢。

login程序禁用本地回显(参见https://man7.org/linux/man-pages/man1/stty.1.html)。

更新如果login程序是你写的,那么就容易多了,只要在读取值后echo就可以了

ECHO是tty的一个特性,当用户手动向tty输入字符时。您的./login << ...没有从tty获得输入,因此不会回显heredoc。就像,例如,

grep something < /some/file

如果你不想让它回显整个文件的数据

最新更新