blog/content/post/2011/2011-09-19-00001525.md

4.0 KiB
Raw Blame History

title date author categories tags
Gaucheで外部コマンドを実行する 2011-09-19T15:04:05Z
kazu634
Labs
Program
gauche
lisp

Gaucheで外部コマンドを実行しようとしたのですが、うまく行かなかったのでとりあえずダンプしておきます。

やりたいこと

外部コマンドをGaucheから実行したい

ここまではわかった

Gaucheで外部コマンドを実行する場合は、どうやら run-process というものがあるらしいので、このコマンドを使えばよさそう

うまく行かなかったこと

次のようなコマンドを実行したかったけれど、実行に失敗した:

% virt-install --name dev1 --ram 512 --disk path=dev1.img,size=10 --vcpus 1 --network bridge=br0,model=virtio --graphic vnc,listen=... --pxe

とりあえず REPL から実行してみます:

gosh> (use gauche.process)
#<undef>
gosh> (run-process '(virt-install --name dev1 --ram 512 --disk path=dev1.img,size=10 --vcpus 1 --network bridge=br0,model=virtio --graphic vnc,listen=0.0.0.0 --pxe))
#<process 1148 "virt-install" active>
gosh> ERROR    Unknown argument ',size=10'

なんか上手くいかない。マニュアルにはこんな記述が。。。:

cmd/argsの各要素は、x->stringで文字列に変換されます。

Gauche ユーザリファレンス: 9.16 gauche.mop.singleton シングルトン

というわけで実験:

gosh> (x->string '(virt-install --name dev1 --ram 512 --disk path=dev1.img,size=10 --vcpus 1 --network bridge=br0,model=virtio --graphic vnc,listen=0.0.0.0 --pxe))
"(virt-install --name dev1 --ram 512 --disk path=dev1.img ,size=10 --vcpus 1 --network bridge=br0 ,model=virtio --graphic vnc ,listen=0.0.0.0 --pxe)"

あっ、なんか「,」のところにスペースが入っている。。。原因はこれか。

さてさて

解決策はどうすればいいのだろうか。。。