Я написал простую команду для создания базового эха в Linux.
Это команда, которую я хочу сделать:
/bin/bash -c 'echo hello'
Это приложение, в котором я запускаю:
using System;
using System.Diagnostics;
namespace ProcessTest
{
class Program
{
static void Main(string[] args)
{
var startInfo = new ProcessStartInfo
{
FileName = @"/bin/bash",
Arguments = @"-c 'echo hello'",
RedirectStandardOutput = true,
UseShellExecute = false
};
using (var process = new Process { StartInfo = startInfo })
{
process.Start();
string result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
Console.WriteLine(result);
Console.Read();
}
}
}
}
Вместо вывода "hello" он выводит это:
hello': -c: line 0: unexpected EOF while looking for matching '''
hello': -c: line 1: syntax error: unexpected end of file
Почему это не работает?
Использование двойных кавычек работает. По какой-то причине это вызывает только одинарные кавычки.
Используйте двойную кавычку вместо одиночной кавычки, задавая поле Аргументы.
static void Main(string[] args)
{
var startInfo = new ProcessStartInfo
{
FileName = @"/bin/bash",
Arguments = @"-c ""echo hello""",
RedirectStandardOutput = true,
UseShellExecute = false
};
using (var process = new Process { StartInfo = startInfo })
{
process.Start();
string result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
Console.WriteLine(result);
Console.Read();
}
}