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

94 lines
4.0 KiB
Markdown
Raw Normal View History

2019-03-31 11:00:21 +00:00
---
title: Gaucheで外部コマンドを実行する
2021-02-27 12:49:38 +00:00
date: 2011-09-19T15:04:05Z
2021-02-23 13:15:28 +00:00
author:
- kazu634
2019-03-31 11:00:21 +00:00
categories:
2021-02-27 12:05:32 +00:00
- Labs
- Program
tags:
2019-03-31 11:00:21 +00:00
- gauche
2021-02-27 12:05:32 +00:00
- lisp
2019-03-31 11:00:21 +00:00
---
<div class="section">
<p>
Gaucheで外部コマンドを実行しようとしたのですが、うまく行かなかったのでとりあえずダンプしておきます。
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<h4>
やりたいこと
</h4>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
外部コマンドをGaucheから実行したい
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<h4>
ここまではわかった
</h4>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
Gaucheで外部コマンドを実行する場合は、どうやら run-process というものがあるらしいので、このコマンドを使えばよさそう
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<h4>
うまく行かなかったこと
</h4>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
次のようなコマンドを実行したかったけれど、実行に失敗した:
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<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>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
とりあえず REPL から実行してみます:
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<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>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
なんか上手くいかない。マニュアルにはこんな記述が。。。:
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<blockquote title="404 Not Found" cite="http://practical-scheme.net/gauche/man/gauche-refj_92.html">
<p>
cmd/argsの各要素は、x->stringで文字列に変換されます。
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<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>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
というわけで実験:
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<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>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
あっ、なんか「,」のところにスペースが入っている。。。原因はこれか。
</p>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<h4>
さてさて
</h4>
2021-02-27 12:49:38 +00:00
2019-03-31 11:00:21 +00:00
<p>
解決策はどうすればいいのだろうか。。。
</p>
</div>