#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\" ' "";