gpt4 book ai didi

bash:一次从字符串中读取一个字符的文本,带空格

转载 作者:行者123 更新时间:2023-11-29 08:59:34 28 4
gpt4 key购买 nike

我很无聊,决定使用 bash 为我的基于文本的冒险编写脚本。基本上,它应该在某些情况下为打字机制作动画以讲故事。我可以像这样在文件中手动执行此操作:

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"

如您所想,这非常乏味。相反,我想一次从字符串(或文件)中提取一个字符,并将 sleep 命令应用于每个字符。

到目前为止,我有以下从文件中读取的内容。 IFS= 允许保留空格,但不允许保留任何其他类型的空格(例如换行符)。

IFS=
while read -n1 achar
do
echo $achar
done < aFile

有没有办法可以使用它来获取所有空白?作为奖励问题,您能告诉我如何将其应用于用户定义的脚本,这样我就不必从单独的文件中读取了吗?因此,例如,假设我有一个名为“hello”的字符串,每当我在 bash 终端中运行我的文件时,我都可以将它简单地传递给我的函数以作为打字机进行动画处理。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

怎么样

#!/bin/bash

function typewriter
{
text="$1"
delay="$2"

for i in $(seq 0 $(expr length "${text}")) ; do
echo -n "${text:$i:1}"
sleep ${delay}
done
}


typewriter "Typewriters are cool." .1
echo # <-- Just for a newline

关于bash:一次从字符串中读取一个字符的文本,带空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com