シェル、 $line1="Test this...test this!" から文字を抽出する方法

シェル、 $line1="Test this...test this!" から文字を抽出する方法

私はスクリプトを書いていますが、もっと楽しくしたいです。

私にとって必要なのは、古いタイプライターのように、一度に1文字(スペースを含む)を取り、画面に書き込むループです。

レトロのように見えるように、タイピングの間にしばらく止まったり、寝るようにしましょう。

答え1

純粋なシェルスクリプトを使用する必要はありません(つまり、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

pvこれを行うことができるいくつかのGNUユーティリティがありますが、echo "$line1" | pv -qL 10必要に応じてシェルでも実行できます。

#!/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オプション、小数点以下の桁を許可

関連情報