c# - .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 结婚,所以如果有更好的方法,我也愿意接受。
解决方案
我不得不再次逃避引号......:
string test = $" -c \"osascript -e \' tell application \\\"Terminal\\\" to do script \\\"echo hello\\\" \' \"";
推荐阅读
- jquery - 为什么`is-hidden`会从dom中删除元素?
- ios - 另一个 UItableview 静态单元格内的静态 UItableview
- python - “numpy.float64”对象不能解释为整数
- rx-java - 每次从一个巨大的列表中发出 50 个项目
- vba - Excel VBA:在具有大量公式的工作簿中加载数据的有效方法
- google-apps-marketplace - G Suite Marketplace 上的屏幕截图未更新
- mysql - 在 Dockerfile 中创建动态用户 - MySQL
- c++ - Docker 容器中的 MXE Qt5 应用程序构建失败
- html - 将英雄图像插入一个部分
- cuda - 如何使用可视化分析器识别 CUDA 代码的带宽和失败率?