LoginSignup
16
0

More than 1 year has passed since last update.

シェルスクリプトが苦手なので、いつもElixirで気軽にスクリプトを書いています。

escriptで実行ファイルを作る方法がありますが、もっと簡単に気軽にやりたいのです。

論よりRUN

toukon.exsファイルを作る

 echo 'IO.puts("闘魂🔥")' > toukon.exs

闘魂🔥を表示するElixirコードが書かれたファイルが出来ました。早速elixirコマンドで実行してみたいと思います。

注意:サンプルコードにあるはコマンド入力待ち状態であることを示す表示(コマンドプロンプト)です。コピーするときはそれを取り除いてください。

elixirコマンドで実行

❯ elixir --help
Usage: elixir [options] [.exs file] [data]
...
❯ elixir toukon.exs
闘魂🔥

闘魂が燃えました。

ファイル名で実行

試しにシェルスクリプトみたいにファイル名をコマンドとして使えるようにします。

何も準備せずにやるとエラーが出ます。順番に対処していきます。

エラー1: permission denied

ファイルを実行する権限が必要です。

❯ ./toukon.exs
zsh: permission denied: ./toukon.exs

chmodでファイルへのアクセス権を変更します。

❯ chmod a+x ./toukon.exs

エラー2: syntax error

ElixirコードがElixirコードとして認識されていないようです。

ファイルを実行する環境にElixirコードを実行したいとお願いする必要があります。

❯ ./toukon.exs
./toukon.exs: line 1: syntax error near unexpected token `"闘魂🔥"'
./toukon.exs: line 1: `IO.puts("闘魂🔥")'

スクリプトファイルにshebangを追加して起動時にスクリプトを読み込むインタプリタを指定します。

Elixirのインタプリタを使いたいので以下のようにおまじないを書きます。

#!/usr/bin/env elixir
IO.puts("闘魂🔥")

お気に入りのテキストエディターで直接編集した方が早いかもしれませんが、以下のようなコマンドでもファイルの中身を入れ替えることができます。

cat <<-EOF > ./toukon.exs
#!/usr/bin/env elixir
IO.puts("闘魂🔥")
EOF

再度あらためてファイルを実行してみます。

 ./toukon.exs
闘魂🔥

闘魂が燃えました。

Mix.install

Mix.install/2を用いて、Elixirスクリプトの中で直接Elixirパッケージをインストールすることも可能です。

cat <<-EOF > ./weather.exs
#! /usr/bin/env elixir
Mix.install [{:req, "~> 0.3.0"}]

weather =
  case Req.get!("https://wttr.in?format=3") do
    %{status: 200, body: body} -> body
    _ -> "error😭"
  end

IO.puts(weather)
EOF
chmod a+x ./weather.exs
❯ ./weather.exs
Washington, District of Columbia, United States: ⛅️  +56°F

闘魂に関してはこの記事がおすすめです。職種を問わずひらめきが得られると思います。

ご参考までに

16
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
0