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

92 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Gaucheで外部コマンドを実行する
author: kazu634
date: 2011-09-19
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5447;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- gauche
- Lisp
---
<div class="section">
<p>
Gaucheで外部コマンドを実行しようとしたのですが、うまく行かなかったのでとりあえずダンプしておきます。
</p>
<h4>
やりたいこと
</h4>
<p>
外部コマンドをGaucheから実行したい
</p>
<h4>
ここまではわかった
</h4>
<p>
Gaucheで外部コマンドを実行する場合は、どうやら run-process というものがあるらしいので、このコマンドを使えばよさそう
</p>
<h4>
うまく行かなかったこと
</h4>
<p>
次のようなコマンドを実行したかったけれど、実行に失敗した:
</p>
<pre class="syntax-highlight">
% virt-<span class="synStatement">install</span> <span class="synSpecial">--name</span> dev1 <span class="synSpecial">--ram</span> <span class="synConstant">512</span> <span class="synSpecial">--disk</span> <span class="synIdentifier">path</span>=<span class="synIdentifier">dev1.img,size</span>=<span class="synConstant">10</span> <span class="synSpecial">--vcpus</span> <span class="synConstant">1</span> <span class="synSpecial">--network</span> <span class="synIdentifier">bridge</span>=<span class="synIdentifier">br0,model</span>=virtio <span class="synSpecial">--graphic</span> <span class="synIdentifier">vnc,listen</span>=<span class="synConstant"></span>.<span class="synConstant"></span>.<span class="synConstant"></span>.<span class="synConstant"></span> <span class="synSpecial">--pxe</span>
</pre>
<p>
とりあえず REPL から実行してみます:
</p>
<pre class="syntax-highlight">
gosh<span class="synStatement">&#62;</span> <span class="synStatement">(</span>use gauche.process<span class="synStatement">)</span>
<span class="synComment">#&#60;undef&#62;</span>
gosh<span class="synStatement">&#62;</span> <span class="synStatement">(</span>run-process <span class="synStatement">'</span><span class="synConstant">(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))</span>
<span class="synConstant">#&#60;process 1148 &#34;virt-install&#34; active&#62;</span>
<span class="synConstant">gosh&#62; ERROR Unknown argument </span><span class="synStatement">'</span>,<span class="synIdentifier">size</span>=<span class="synConstant">10</span><span class="synStatement">'</span>
</pre>
<p>
なんか上手くいかない。マニュアルにはこんな記述が。。。:
</p>
<blockquote title="404 Not Found" cite="http://practical-scheme.net/gauche/man/gauche-refj_92.html">
<p>
cmd/argsの各要素は、x->stringで文字列に変換されます。
</p>
<p>
<cite><a href="http://practical-scheme.net/gauche/man/gauche-refj_92.html" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://practical-scheme.net/gauche/man/gauche-refj_92.html', 'Gauche ユーザリファレンス: 9.16 gauche.mop.singleton &#8211; シングルトン');" target="_blank">Gauche ユーザリファレンス: 9.16 gauche.mop.singleton &#8211; シングルトン</a></cite>
</p>
</blockquote>
<p>
というわけで実験:
</p>
<pre class="syntax-highlight">
gosh<span class="synStatement">&#62;</span> <span class="synStatement">(</span>x-<span class="synStatement">&#62;</span>string <span class="synStatement">'</span><span class="synConstant">(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))</span>
<span class="synConstant">&#34;(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)&#34;</span>
</pre>
<p>
あっ、なんか「,」のところにスペースが入っている。。。原因はこれか。
</p>
<h4>
さてさて
</h4>
<p>
解決策はどうすればいいのだろうか。。。
</p>
</div>