92 lines
4.4 KiB
Markdown
92 lines
4.4 KiB
Markdown
---
|
||
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">></span> <span class="synStatement">(</span>use gauche.process<span class="synStatement">)</span>
|
||
<span class="synComment">#<undef></span>
|
||
gosh<span class="synStatement">></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">#<process 1148 "virt-install" active></span>
|
||
<span class="synConstant">gosh> 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 – シングルトン');" target="_blank">Gauche ユーザリファレンス: 9.16 gauche.mop.singleton – シングルトン</a></cite>
|
||
</p>
|
||
</blockquote>
|
||
|
||
<p>
|
||
というわけで実験:
|
||
</p>
|
||
|
||
<pre class="syntax-highlight">
|
||
gosh<span class="synStatement">></span> <span class="synStatement">(</span>x-<span class="synStatement">></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">"(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>
|
||
</pre>
|
||
|
||
<p>
|
||
あっ、なんか「,」のところにスペースが入っている。。。原因はこれか。
|
||
</p>
|
||
|
||
<h4>
|
||
さてさて
|
||
</h4>
|
||
|
||
<p>
|
||
解決策はどうすればいいのだろうか。。。
|
||
</p>
|
||
</div>
|