Sono annoiato e ho deciso di scrivere uno script per una mia avventura basata su testo utilizzando bash. Fondamentalmente, si suppone che animi una macchina da scrivere in certi casi per uno storytelling drammatico. Posso farlo manualmente in un file in questo modo:bash: lettura del testo da una stringa un carattere alla volta, con spazi
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"
Come potete immaginare, è terribilmente noioso. Invece, voglio tirare caratteri da una stringa (o file) un carattere alla volta e applicare il comando di sonno a ciascun carattere.
Finora, ho il seguente, che legge da un file. IFS = consente agli spazi di conservare, ma non qualsiasi altro tipo di spazio bianco (come newline).
IFS=
while read -n1 achar
do
echo $achar
done < aFile
C'è un modo per utilizzarlo per ottenere tutti gli spazi bianchi? Come domanda bonus, puoi dirmi come applicarlo a uno script definito dall'utente, quindi non devo leggere da un file separato? Quindi, per esempio, diciamo che ho una stringa chiamata "ciao", e posso semplicemente passarla alla mia funzione per animare come macchina da scrivere ogni volta che eseguo il mio file nel terminale bash.
Qualsiasi aiuto sarebbe apprezzato. Grazie!
Come sulla conversione di nuove righe in spazi, utilizzando 'tr (1)'? – g13n
Se comprendo correttamente la pagina man, posso usare l'opzione tr [: print:]? – derp
+1 solo perché hai deciso di combattere la noia con bash-scripting :) –