プログラムの出力を収集する - lisp-cookbook-ja/common-lisp GitHub Wiki

入出力 ライブラリ kmrcl cl-ppcre

プログラムの出力を収集する

外部のプログラムを呼ぶ方法については処理系依存になりますが、大抵の処理系は呼び出す機能を備えています。 下記の例では、CLiki:KMRCL の command-outputを利用しています。

出力を一つの文字列として収集

(let ((output (kmrcl:command-output "ls /bin/z*")))
  output)
;=> "/bin/zcat
/bin/zcmp
/bin/zdiff
/bin/zegrep
/bin/zfgrep
/bin/zforce
/bin/zgrep
/bin/zless
/bin/zmore
/bin/znew
/bin/zsh
/bin/zsh4
"

出力を行ごとに分けたリストにする

CLiki:cl-ppcre を利用

(let ((output (ppcre:split "\\n" 
                (kmrcl:command-output "ls /bin/z*"))))
  output)
;=> ("/bin/zcat" "/bin/zcmp" "/bin/zdiff" "/bin/zegrep" 
     "/bin/zfgrep" "/bin/zforce" "/bin/zgrep" "/bin/zless"
     "/bin/zmore" "/bin/znew" "/bin/zsh" "/bin/zsh4")