Kekeの日記

エンジニア、読書なんでも

Luaの標準入力のいろは

f:id:bobchan1915:20190810190040p:plain

本記事

最近、何かとLuaの話題を聞くことが多くなりましたが、情報が他のメジャーなプログラミング言語に比べて非常に少ないです。

Luaを使うにあたって標準入力を色々、試してみたいなと思って本記事に日記としてまとめます。

実際に、いくつもの入力ケースを用意しました。何かしら標準入力で受け取らなければならないときに、使うことができると思います。

標準入力の基本

標準入力は以下のように取得することができます。

1. *n: 数字を受け取る

s = io.read("*n")
print(s)

例えば以下のような標準入力を受け取ることができます。

echo -n "1" | lua my.lua
=> 1

当然ですが、例えば空白区切りで入力が渡される場合は2つに分けられます。

s = io.read("*n")
t = io.read("*n")
print(s)
print(t)

そして、以下のように実行します。

echo -n "50 100" | lua my.lua
=> 50
100

複数行のときも同様にうまくいきます。

echo -n "50
100" | lua my.lua
=> 50
100

ちなみに2つの値は以下のように取得することができます。

 a,b = io.read("*n","*n")

2. *l: 行を受け取る

プロンプト入力など、何かしら行単位で受け取りたいときに使えます。

s = io.read("*l") -- read a line (default when no parameter is given)
echo -n "I am keke" | lua my.lua

3. *a: EOFまで入力を受け取る

s = io.read("*a")

試しに以下のようなファイルを作っておきます。

echo "hoge
piyo
kusa" >> hoge

例えば、ファイルをcatで出力して渡してみましょう。

cat hoge | lua my.lua
piyo
hoge
kusa

最終行に改行コードが入っていますがechoのときに入っているので仕方ないです。

ここまでで基本的な入力は受けることができたのではないかのと思います。

まとめ

Luaを使って標準入力ができるようになりました。PythonやRubyなどと同様に、非常に簡単にアプリケーションを作ることができるので、今度機会があればこれでCLIツールを作って見ようと思います。

備忘録、終了です。ありがとうございます。