Tukubai先日拡張FizzBuzz問題をシェルプログラミングで解いた。シェル芸勉強会の過去問を解いていたら、もっと簡単な方法で解いてあったのだ。papiro.hatenablog.jpということで、もっと簡単な方法で拡張FizzBuzzを解いてみることにする。解き方のポイントは下記の通り。20FizzやBuzzなどの文字を数字の前に挿入することだけ。後は数字の前に空白を入れて表示するだけ。やることが簡単というのがポイント。$1}'12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19Buzzと言うことで、上記の処理を行うawkスクリプトを生成してやれば良い。"$0}・・・という感じで、クォーティングとバックスラッシュによるエスケープがゴチャラゴチャラとした感じでちょっとゲンナリする。そこでここはTukubaiコマンドの力を借りることにする。Tukubaiコマンドにはテンプレートにデータを埋め込むような処理が出来るmojihameというコマンドがある。-lオプションで指定された文字列(例ではLABEL)に挟まれた部分が、データの行数だけ繰り返して処理されるのだ。"$0}templateの中に記載された%1と%2の場所に、入力データのデータが左から順番に埋め込まれる。テンプレートがシンプルなテキストデータになっていると、わかりやすくてスッキリする。テンプレートやデータは標準入力を指定することが出来る。"$0}以上を踏まえて、拡張FizzBuzz問題をシェルプログラミング解いてみる。$tmp*awkスクリプト生成のためのテンプレートは、一時ファイルとして作成。実際の処理は大幅に減ったのがわかると思う。コードを生成しているということは、ある意味メタプログラミングのような意味合いがあるのではないか?実行例は下記の通り。はてなブログPro情報処理ってもっとシンプルにならないだろうか?PKI関連、RubyやPHP等のLL、シェルスクリプト、シェル芸、ユニケージ見習い未満。シェルスクリプトとシェル芸はきっと違うんですよ。JPはてなブログをはじめよう!papiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。