glueで年末年始シェル芸問題集を解いた雑感(Q4まで)

Sat Jan 10 18:52:34 JST 2015 (modified: Mon Aug 19 17:52:24 JST 2019)
views: 842, keywords: コマンド,glue,GlueLang,シェル芸,グルー言語を作る

  このエントリーをはてなブックマークに追加 

私以外のコントリビュータも出現し、試してくださる方も出て引くに引けない状況のGlueLangですが、ちょっと使った例と、自分で使ってみたフィードバックが必要かなと思い、自分で出題した年末年始シェル芸問題集の問題をGlueLangで解いてみようと思いました。

答えはMac用です。

Q1

今のところPATHをGlueLangに読ませていないので、コマンドを使うときはimportでパスを指定するか、フルパスで呼び出す必要がありますが、xargsに渡したgmd5sumではフルパスでしか指定できない問題が発覚(というよりウスウス気づいてましたが・・・)。あとはオプションをいちいちシングルクォートするのはやはり面倒かなと。

あとは、importの後の空行にスペースを入れるとちゃんとパースしてくれませんね・・・。

パスやその他環境変数については、

というように簡単に読み込めるようにしようかと思います。

オプションについてはハイフンで始まったり数字で始まるものはクォートを省略できる方がいいかも。

Q2

ワンライナーなのでほとんど普通のシェルスクリプトと変わりません。しかし、標準エラー出力の制御を今のところ実装していないというのはやはり使いづらい。

エラーは普通にリダイレクトでとれるようにしておけば良いか・・・。次のような感じで。

ログを見るだけなら上の書式にして、標準エラー出力をGlueLang内で積極的に使うときは、fileの後に二つファイルを並べる方式になると思います。

Q3

基本的にはワンライナーをGlueLangの方法に書き換えるだけです。

しかし、もとがワンライナーなので意味不明なのは、GlueLangの宣伝としてはどうなのか??

ということで、別解をいただきましたので、実装してみたいと思います。

はい。

Q4

このbashのワンライナーを書き直せばよいのですが・・・

・・・さて、whileがないGlueLangでどうやって処理しよう・・・。コマンド作っちゃえ。ということで、次のようなGlueLang用のコマンドを作りました。

んで、Glueで使ってみます。

はい実行。

bashで書いているコマンドを実行していることで他力本願極まりないですが、bashで書いたコマンドをCで書き直して、GlueLangの付属コマンドにしてしまうつもりです。GlueLangを作るにあたり、もともと制御構文をなくしたいという動機があったので、これでいいんでないかと思います。

ただ、whileがないと初心者向けにはならないので、ゆくゆくは実装するつもりです。しかし、コマンドを繰り返し実行するパターンにはあまりバリエーションがないので、loop-serialのようなコマンドをいくつか作ってそっちを使うことを推奨したいと考えています。

おわりに

今回は4問しか解きませんでしたが、これだけでも改善点がいろいろ出てきたので、開発に移りたいと思います・・・。やっぱりPATH周りは早くなんとかしたいかなと。

おしまい。



prev:【解答】年末年始シェル芸問題集 next:ruminとGlueLangについての日記





このサイトではGoogle Analyticsやその他ソーシャルボタンのためにCookieを使用しています。もし同意いただけない場合はブラウザでクッキーを無効にして閲覧をお願いします。This site uses cookies for Google AdSense and some social buttons. If you cannot accept our use of cookies, please disable cookies on your browser.