2012-06-11 33 views
6

Tôi đang viết một tập lệnh bash trong đó tôi đọc các ký tự đơn từ đầu vào. Tôi làm như vậy bằng cách sử dụng read -n 1 -s. -n 1 là chỉ đọc một ký tự đơn; -s là chế độ "im lặng", trong đó các ký tự đã nhập sẽ không hiển thị.Ngăn hiển thị các ký tự đã nhập (như tắt thuộc tính "echo" trong các từ)

Vấn đề là, khi lệnh hiện tại được thực thi không phải là read (bất cứ khi nào một số lệnh khác trong tập lệnh bash đang được thực hiện), ký tự được hiển thị trong thiết bị đầu cuối.

Đây là hành vi bình thường của chương trình trong thiết bị đầu cuối. Để vô hiệu hóa điều này, người ta thường vô hiệu hóa chế độ echo, ví dụ bằng cách sử dụng thư viện termios.

Làm cách nào để đạt được điều này trong tập lệnh bash?

Tôi thích các giải pháp trong các lệnh bash/Unix thuần túy (không có các ngôn ngữ kịch bản khác như python, perl, v.v.).

Trả lời

14
stty -echo 
# Anything they type won't output here 
stty echo 
# Now it will 
+1

Vâng. Đó là nhanh :) Cảm ơn! (Tôi có thể chấp nhận trong 12 phút.) – leemes

Các vấn đề liên quan