Mac環境でC#からシェルを実行する方法。
シェルの引数の指定の仕方。
関連ページ
参考URL
個人的なアプリ開発で、C#からMacのシェルを実行したい状況が出てきた。
幸い思ったより簡単に出来たので共有。シェル内の引数も指定できるので汎用性高いと思う。

ProcessStartInfoでシェルを実行
C#にはProcessStartInfoという機能があり、これを使うと外部アプリケーションを呼ぶことができます。
Mac環境でshファイルを実行するには、まずMacターミナルを呼び出し、そこから間接的にシェルを実行します。
例えば次のようなコードを書かれた、test.shファイルがあったとします。
内容としてはユーザーディレクトリ直下にtest.txtファイルを作成するコマンドになります。
これをC#から呼び出すコードは次の通り。
var
scriptPath
=
[実行したいtest.shファイルのパス]
;
ProcessStartInfo
pInfo
=
new
ProcessStartInfo();
pInfo.FileName
=
"/bin/bash";
pInfo.Arguments
=
scriptPath;
pInfo.ErrorDialog
=
true;
pInfo.UseShellExecute
=
true;
Process.Start(pInfo);
pInfo.FileNameに代入されている"/bin/bash"がターミナルを起動するコマンド。
次のpInfo.Argumentsに代入されているのがターミナルから実行するシェルになります。
指定したパスに対してファイルを作るtest.shというファイルがあったとします。
コードは次の通りで、$1部分が引数です。
これをC#から呼び出すコードは次の通り。
var
scriptPath
=
[実行したいtest.shファイルのパス]
;
var
argument
=
[シェルの引数に渡したいコード]
;
ProcessStartInfo
pInfo
=
new
ProcessStartInfo();
pInfo.FileName
=
"/bin/bash";
pInfo.Arguments
=
$"{scriptPath}
{argument}";
pInfo.ErrorDialog
=
true;
pInfo.UseShellExecute
=
true;
Process.Start(pInfo);
これで引数付きでシェルを実行できます。意外と簡単。
0
0