Tôi chán và quyết định viết một kịch bản cho một cuộc phiêu lưu dựa trên văn bản của tôi bằng cách sử dụng bash. Về cơ bản, nó được cho là tạo hiệu ứng cho máy đánh chữ trong một số trường hợp nhất định cho kể chuyện đầy kịch tính. Tôi có thể thực hiện việc này theo cách thủ công trong một tệp như vậy:bash: đọc văn bản từ một chuỗi một ký tự cùng một lúc, với khoảng trắng
sleep 0.1
echo -n "h"
sleep 0.1
echo -n "e"
sleep 0.1
echo -n "l"
sleep 0.1
echo -n "l"
sleep 0.1
echo -n "o"
Như bạn có thể tưởng tượng, nó thật đáng tẻ nhạt. Thay vào đó, tôi muốn kéo các ký tự từ một chuỗi (hoặc tệp) một ký tự cùng một lúc và áp dụng lệnh ngủ cho mỗi ký tự.
Cho đến nay, tôi có thông tin sau đây, đọc từ tệp. IFS = cho phép các khoảng trống giữ lại, nhưng không cho phép bất kỳ loại khoảng trống nào khác (chẳng hạn như dòng mới).
IFS=
while read -n1 achar
do
echo $achar
done < aFile
Có cách nào tôi có thể sử dụng để nhận tất cả khoảng trắng? Là một câu hỏi tiền thưởng, bạn có thể cho tôi biết cách áp dụng điều này cho một tập lệnh do người dùng xác định, vì vậy tôi không phải đọc từ một tệp riêng biệt? Vì vậy, ví dụ, cho phép nói rằng tôi có một chuỗi được gọi là "hello", và tôi có thể chỉ cần chuyển nó vào chức năng của tôi để hoạt hình như một máy đánh chữ bất cứ khi nào tôi chạy tập tin của tôi trong thiết bị đầu cuối bash.
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn!
Làm cách nào để chuyển đổi dòng mới thành dấu cách bằng cách sử dụng 'tr (1)'? – g13n
Nếu tôi hiểu chính xác trang của người đàn ông, tôi có sử dụng tùy chọn tr [: print:] không? – derp
+1 chỉ vì bạn quyết định chống lại sự nhàm chán với bash-scripting :) –