Как получить пароль для командной строки в Racket? - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь получить ввод пароля в командной строке, не показывая пароль, когда он набирается. Данный код ниже не подходит, потому что он показывает пароль, когда пользователь вводит его в командной строке:

(display "Password: ")
(define password (read-line))

Как я могу ввести пароль в командной строке с помощью Racket?

1 Ответ

0 голосов
/ 25 марта 2020

Это на самом деле не вопрос Ракетки, а больше возможностей терминала. Вот одно решение, использующее stty. Есть и другие решения, в зависимости от того, насколько сложной вы хотите, чтобы программа.

#lang racket

(define (read-password)
  (system "stty -echo")
  (begin0 (read-line)
    (system "stty echo")
    (newline)))

(display "Password: ")
(define password (read-password))
(display "Username: ")
(define user (read-line))
(printf "User ~a's secret is: ~a\n" user password)
Password:
Username: Randall
User Randall's secret is: correcthorsebatterystaple
...