Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20140607181635_sb-ext_run-program |
|
sb-ext_run-program
SBCL の sb-ext:run-program で外部コマンドを実行したときに、外部プログラムが吐いた標準出力を文字列として受け取る。
例: ;; 文字列ストリームに :output を向ける * (defparameter strm (make-string-output-stream)) * (sb-ext:run-program "date" nil :search t :output strm) * (get-output-stream-string strm) ;; -> ;; "2014年 6月 7日 土曜日 18時06分42秒 JST ;; "
いちいち全部書くのは面倒なので関数にまとめる。
(defun trim (str)
(string-trim '(#\Space #\newline #\tab) str))
(defun cmd (prgrm args &key (get-string t) (trim t))
(if get-string
(let ((strm (make-string-output-stream)))
(sb-ext:run-program prgrm args :search t :output strm)
(let ((out (get-output-stream-string strm)))
(if trim
(trim out)
out)))
(sb-ext:run-program prgrm args :search t :output t)))
* (cmd "date" nil)
;; -> "2014年 6月 7日 土曜日 18時10分33秒 JST"
|
| © Shin Nakamura/BasicWerk 2014 |