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 |