Ошибка .NET Core при использовании osascript для открытия нового терминала на Mac

#c# #macos #.net-core

#c# #macos #.net-core

Вопрос:

Я пытаюсь открыть новый терминал и запустить команду из своего консольного приложения, я обнаружил, что на Mac CreateNoWindow игнорируется, поэтому вместо этого я использую osascript для открытия нового терминала, поскольку он new не работает и open не позволяет мне отправлять команду.

Когда я запускаю приведенный ниже код, я получаю следующую ошибку:

привет ‘: -c: строка 0: неожиданный EOF при поиске соответствия `’

привет ‘: -c: строка 1: синтаксическая ошибка: неожиданный конец файла

 string test = $" -c "osascript -e ' tell application "Terminal" to do script "echo hello" ' "";
test = new string(test.Where(c => !char.IsControl(c)).ToArray());
Console.WriteLine(test);
ProcessStartInfo startInfo = new ProcessStartInfo
    {
        UseShellExecute = true,
        WindowStyle = ProcessWindowStyle.Normal,
        FileName = "/bin/bash",
        Arguments = test,
        CreateNoWindow = false,
    };
process.StartInfo = startInfo;
process.Start();
 

Однако, когда я копирую и вставляю вывод с консоли.writeline, команда работает.
Как вы можете видеть, я уже пытался удалить управляющие символы, но все равно безуспешно.

Я не женат на osascript, поэтому, если есть лучший способ сделать это, я также открыт для этого.

Ответ №1:

Мне снова пришлось экранировать кавычки…:

 string test = $" -c "osascript -e ' tell application \"Terminal\" to do script \"echo hello\" ' "";