来自 heredoc 的标准输入没有打印到屏幕?
stdin from heredoc not printing to screen?
我有一个交互登录用户的程序。我使用 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.
如您所见,所有 heredoc 输入都没有打印出来,即使程序似乎正确地获取了标准输入。这是什么原因?如果我仍然可以看到这些输入来帮助我调试问题,那就太好了。谢谢
login
程序禁用本地回显(参见 https://man7.org/linux/man-pages/man1/stty.1.html)。
更新
如果login
程序是你写的,那就简单多了,只需要echo
阅读后的值
ECHO 是用户手动向 tty 键入字符时 tty 的一个功能。您的 ./login << ...
没有从 tty 获得输入,因此不会回显 heredoc。就像,例如,
grep something < /some/file
您不希望它 回显 整个文件的数据。
我有一个交互登录用户的程序。我使用 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.
如您所见,所有 heredoc 输入都没有打印出来,即使程序似乎正确地获取了标准输入。这是什么原因?如果我仍然可以看到这些输入来帮助我调试问题,那就太好了。谢谢
login
程序禁用本地回显(参见 https://man7.org/linux/man-pages/man1/stty.1.html)。
更新
如果login
程序是你写的,那就简单多了,只需要echo
阅读后的值
ECHO 是用户手动向 tty 键入字符时 tty 的一个功能。您的 ./login << ...
没有从 tty 获得输入,因此不会回显 heredoc。就像,例如,
grep something < /some/file
您不希望它 回显 整个文件的数据。