2

My question is literally, how do I execute a Shell command from my application. There is a similar Post, but that shows how to execute a script file and requires the path to that file.

var process = new Process()
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = command, // Path required here
            Arguments = args,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = true,
        }
    };
process.Start();

Why I want to pass the command as a string?

Because I want to interpolate it. Otherwise, I would have to create a script, with some input parameters. Since I'm not that good with Shell, I prefer the easy way.

Gicu Mironica
  • 585
  • 8
  • 22

1 Answers1

5

Assume you want to run echo hello in bash, then

    Process process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "bash",
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false
        }
    };
    process.Start();
    await process.StandardInput.WriteLineAsync("echo hello");
    var output = await process.StandardOutput.ReadLineAsync();
    Console.WriteLine(output);
Lex Li
  • 60,503
  • 9
  • 116
  • 147