ひでぼ~blog

C#ときどきゲーム

ProcessXを使ってシェルスクリプトを実行してみる

CySharpから出ているProcessXが良いらしいぞという噂を聞いたので試してみました。 ProcessXはcmdやPowerShellで実行するコマンドたちをC#から呼びやすくするライブラリのようです。

github.com

やってみる

試しにdotnetコマンドを実行してバージョン情報を取得してみます。

using System;
using Zx;

// dotnet --versionの結果を取得
var version = await "dotnet --version";
Console.WriteLine($"version: {version}");

// stringの配列で取ることもできる
var sdks = await Env.runl($"dotnet --list-sdks");
foreach (var sdk in sdks)
{
    Console.WriteLine($"sdk: {sdk}");
}

実行結果

6.0.100-rc.2.21505.57
version: 6.0.100-rc.2.21505.57
3.1.414 [C:\Program Files\dotnet\sdk]
5.0.303 [C:\Program Files\dotnet\sdk]
5.0.401 [C:\Program Files\dotnet\sdk]
5.0.402 [C:\Program Files\dotnet\sdk]
6.0.100-rc.2.21505.57 [C:\Program Files\dotnet\sdk]
sdk: 3.1.414 [C:\Program Files\dotnet\sdk]
sdk: 5.0.303 [C:\Program Files\dotnet\sdk]
sdk: 5.0.401 [C:\Program Files\dotnet\sdk]
sdk: 5.0.402 [C:\Program Files\dotnet\sdk]
sdk: 6.0.100-rc.2.21505.57 [C:\Program Files\dotnet\sdk]

所感

最近のC#ではnamespaceやMainメソッドを省略した書き方ができるようになったのも相まって、C#でbatやps1ファイルみたいなスクリプトを書いている感が強いです。全体的な見た目もスッキリしていて良いです。

cmdやらPowerShellを使ってお手製のCI/CDスクリプトを作ったりすることがありますが、そういうスクリプトも全部C#でできそうな感じがします。C#が使えるならいつも使っているVisual Studioからデバッグもできて便利ですね。

この書き方、すごい直感的で好きです。google/zxというのがもとになっているみたいですね。

 await "dotnet --version";

参考

neue.cc