#:g1: eggs: shellの紹介

Posted 2014-11-02 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の307日目です。

eggs: shellとはなにか

 eggs: shellは、Chickenからシェルを呼ぶためのライブラリです。

パッケージ情報

パッケージ名eggs: shell
Chicken eggs:shell - The Chicken Scheme wiki

インストール方法

$ sudo chicken-install shell

すれば、

(use shell)

で使えます。

試してみる

 大別すると、実行だけするrunとコマンドが出力した結果を文字列にして返すcaptureがあります。

(run (pwd))
;=> #<unspecified>

(capture ((date -R))) ;=> "Mon, 27 Oct 2014 02:31:31 +0900\n"

 これらのバリエーションという感じで、複数のコマンドの実行結果を多値で返すrun*、実行する関数を返すshellがあります。

(shell (ls -l))
;=> #<procedure (? . args654)>

(run* (pwd) (pwd) (pwd)) ;=> 0 ; 0 ; 0

以上の関数は、executeという関数が下請けになっていてマクロを展開すればexecuteが出てきます。

 コマンドの形式ですが、文字列でもリストのでもOKになっています。リストの方はflattenされるのでネストしていても大丈夫です。

(capture "ls -1a")

(capture (ls (-a -1)))

(capture (ls -a -1))

まとめ

 今回は、eggs: shellを紹介してみました。
シンプルな構成でなかなか良さそうですね。

comments powered by Disqus