←前 | ↑ 目次 |
次→ |
$Date: 2009/10/13 02:58:59 $
それでは早速Luaスクリプトを作ってみましょう。最初はお約束ということで、「Hello, world!」という文字列をコンソールに出力するスクリプトです。
まずは、ヤマハルーターのコンソールにログインし、administratorコマンドにより管理モードに入ってください。今後、コンソール上での操作はすべて管理モードで行うものとします。
#
それでは、以下のようにコマンドを入力してください。入力部分にはアンダーラインが入っています。
# lua -e 'print("Hello, world!")'
Hello, world!
#
いかがでしょうか。コンソール画面に「Hello, world!」と表示されたでしょうか。
ここでは、Luaスクリプトをコマンドラインから直接実行しています。luaコマンドはLuaスクリプトを実行するためのコマンドで、-eオプションは、引き続く文字列がLuaスクリプトそのものであることを示しています。スクリプト中に空白やダブルクォーテーションを含んでいるために、コンソールから入力するときにはスクリプト文字列をシングルクォーテーションで囲んでいます。
「print("Hello, world!")」は、Luaスクリプトです。print関数は与えられた引数を文字列としてコンソールに出力する関数です。今回は、文字列"Hello, world!"を引数として与えているので、それがそのままコンソールに出力されます。
次に、もう少しスクリプトらしい例を実行してみましょう。以下のようにコマンドを入力してください。
# lua -e 'for i=1,10 do print(i, "Hello, world!") end'
1 Hello, world!
2 Hello, world!
3 Hello, world!
4 Hello, world!
5 Hello, world!
6 Hello, world!
7 Hello, world!
8 Hello, world!
9 Hello, world!
10 Hello, world!
#
for文は、繰り返しを行うための制御文です。このfor文の意味は、「変数iを1から10まで1ずつ増やしながら、do〜endの間にある文(今回はprint関数)を繰り返し実行せよ」となります。
コマンドラインで直接スクリプトを記述する方法は、簡単なスクリプトを実行するのにはとても便利ですが、スクリプトが長くなってくると現実的ではありません。そこで、スクリプトをファイルに保存してから実行してみましょう。
以下の内容を持つ"hello.lua"というファイルをPCで作成し、TFTPでルーターに"/lua/hello.lua"というファイル名で転送してください。
[hello.lua] ダウンロード
for i=1,10 do print(i, "Hello, world!") end
TFTPコマンドでの転送(ルーターの管理者パスワードなしの場合)
C:\>tftp 192.168.100.1 put hello.lua /lua/hello.lua
TFTPコマンドでの転送(ルーターの管理者パスワードが"doremi"の場合)
C:\>tftp 192.168.100.1 put hello.lua /lua/hello.lua/doremi
次に、以下のようにコマンドを入力して、"hello.lua"を実行します。
# lua /lua/hello.lua
1 Hello, world!
2 Hello, world!
3 Hello, world!
4 Hello, world!
5 Hello, world!
6 Hello, world!
7 Hello, world!
8 Hello, world!
9 Hello, world!
10 Hello, world!
#
luaコマンドを-eオプションなしで実行した場合には、luaコマンドは引数をファイル名とみなし、そのファイルに記述されたスクリプトを実行します。上の場合は"/lua/hello.lua"がファイル名で、その中のスクリプトを実行した、ということになります。ファイルの中身は先ほど実行したfor文を使ったループと同じものなので、結果も同じになります。
Luaスクリプトを保存するファイルのファイル名には特に制限はありません。この例では拡張子を「.lua」として「/lua」ディレクトリにLuaスクリプトファイルを保存していますが、特にそうしなくてはいけない決まりがあるわけではなく、単なる習慣です。また、Luaスクリプトファイルはルーター内蔵のFlashROMだけではなく、ルーターのハードウェアがインタフェースを持っていれば、そこに接続したマイクロSDメモリやUSBメモリにあるファイルも実行することができます。
←前 | 目次 ↓ |
次→ |