2019-03-31 11:00:21 +00:00
|
|
|
|
---
|
|
|
|
|
title: Gaucheで外部コマンドを実行する
|
|
|
|
|
date: 2011-09-19
|
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>
|
|
|
|
|
|
|
|
|
|
<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>
|
2019-04-02 16:06:15 +00:00
|
|
|
|
</div>
|