シェル芸で繰り返し同じコマンドに出力をパイプで渡して処理をさせる

シェル芸botで遊んでた際、echo-sdをネストさせて表示するという処理があったので、なんかいい感じに回数増やせないかなと思って調べてみた。 で、パイプ付きの処理をブレース展開させてevalで実行させて、その時に最後にcatで出力を読み込ませてみたらいい感じに処理させることができた。

command | eval 'command |'{,,} cat

例えば、echo-sdをネストさせる場合だと以下のようになる。

echo-sd | eval 'xargs echo-sd |'{,,,} cat

他に使いみち無いかな…と思って考えてみたところ、hashのストレッチングに使えないかなと思ったのでやってみた。 ブレース展開時にパイプでつなげておけば、セットで処理できるようだ。

printf password |eval 'sha1sum|cut -d" " -f1|'{,,,} cat
blacknon@BS-PUB-UBUNTU-01:~$ printf password |eval 'sha1sum|cut -d" " -f1|' cat
5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
blacknon@BS-PUB-UBUNTU-01:~$ printf password |eval 'sha1sum|cut -d" " -f1|'{,} cat
642f03cb48c7b584099b8670ac40d393fc63690c
blacknon@BS-PUB-UBUNTU-01:~$ printf password |eval 'sha1sum|cut -d" " -f1|'{,,} cat
d9a6ea3bf80e366ccb9bef5c31d6960d5476833f
blacknon@BS-PUB-UBUNTU-01:~$ printf password |eval 'sha1sum|cut -d" " -f1|'{,,,} cat
866e7e9c73529a57348bfa3a33c7fcdc906ee1ae