我有一個程式,可以互動式地登錄一個用戶。我使用heredoc來自動化這個程序。
./login <<EOF
[email protected]
密碼
EOF
我本來以為輸出結果會是這樣的。這是我在沒有heredoc的情況下運行程式并自己輸入用戶名和密碼時顯示的情況。
$ ./login
輸入你的電子郵件:[email protected]
輸入你的密碼:password
成功登錄in。
然而,我只看到這個。
$ ./login
輸入你的電子郵件。
輸入你的密碼。
成功登錄in。
正如你所看到的,所有的heredoc輸入都沒有被列印出來,盡管程式似乎正確地得到了stdin。這到底是什么原因呢?如果我還能看到這些輸入,以幫助我除錯問題,那就太好了。謝謝。
uj5u.com熱心網友回復:
login程式禁用了本地回聲(見https://man7.org/linux/man-pages/man1/stty.1.html)。
Update
如果login程式是你寫的,那就更簡單了,只要在讀取數值后echo即可
uj5u.com熱心網友回復:
ECHO是tty的一個功能,當用戶手動輸入字符到tty時。你的./login <<...沒有得到tty的輸入,所以heredoc不會被回顯。這就像,比如說,
grep something < /some/file
當你不想讓它echo整個檔案的資料時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/308012.html
標籤:
