我正在写一个剧本,我想给它增添一点趣味。
我需要的是一个循环,它一次获取一个字母(包括空格),然后将其写在屏幕上,就像旧打字机一样。
我会在打字之间写一些暂停/睡眠,这样看起来就很复古。
答案1
如果您不介意不使用纯 shell 脚本(即,您可以混合使用 awk 或 perl),这里是一个使用 awk 的示例:
echo "This is... test this" |awk '{
for (i=1; i <= length($0); i++) {
printf substr($0,i,1);
system("sleep 0.1");
}
print "";
}'
答案2
有一些 GNU 实用程序(例如pv
可以执行该任务echo "$line1" | pv -qL 10
),但如果您愿意,可以在 shell 中执行
#!/bin/bash
while [[ -n "$1" ]]
do
sleep ${2:-"0.2"}
printf "%c" "$1"
temp=${1#?}
set -- "$temp" "$2"
done
echo
用法:script.name 'text in single quotes' [interval time in seconds][1]
如果您想使用变量,请执行相同的操作:
line1='Test this… test this!'
script.name "$line1" 0.3
[1]:interval time in seconds
可选,允许小数