11行。
成果物
使い方
. anim_wait.sh Wait "表示したい文字列。" Wait "Wait時間を秒で指定可。" 0.25
コード
anim_wait.sh
Wait(){
[ "$2" = '' ] && local waitTime=0.05
[ "$2" != '' ] && local waitTime=$2
local count=0
while [ $count -lt ${#1} ]; do
local target="${1:$count:1}"
echo -n "$target"
((count++))
sleep "$waitTime"
done
}
${1:$count:1}がポイント。${変数名:インデックス:長さ}で部分文字列が取得できる。
他
参考になった記事はいくつかあったが、どれも問題がある。
日本語が化ける
fold
echo '日本語' | fold -s1
awk
echo '日本語' | awk -v FS='' '{
for (i = 1; i <= NF; i++) printf $i;
}'
ファイルが必要
bashでファイルから1文字づつ読み込んで処理をさせる | 俺的備忘録 〜なんかいろいろ〜
tmpf=/tmp/tmp.txt
echo "日本語" > $tmpf
while IFS= read -rN1 char; do
printf "$char";
sleep 0.1;
done < $tmpf
- 一時ファイル(
/tmp/...)が必要/tmp/をRAMディスクに割り当てれば可