首页 > 解决方案 > .NET Core 使用 osascript 在 Mac 中打开新终端时出错

问题描述

我正在尝试打开一个新终端并从我的控制台应用程序运行命令,我发现在 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();

但是,当我从 console.writeline 复制并粘贴输出时,该命令有效。如您所见,我已经尝试删除控制字符,但仍然没有运气。

我没有与 osascript 结婚,所以如果有更好的方法,我也愿意接受。

标签: c#macos.net-core

解决方案


我不得不再次逃避引号......:

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

推荐阅读