【发布时间】:2022-01-12 22:26:44
【问题描述】:
我正在寻找一种在终端中运行脚本字符串的通用且安全的方法。有几十个关于堆栈交换的问答,但所有都无法正确地进行字段分隔或转义,不要使用 glob、引用等,因为它们中的大多数都通过多个级别的脚本(shell、osascript )。
我在 C++ 应用程序中需要这个,所以 objc/cocoa 也是一个选项。任何可以完成工作的解决方案都是一个很好的解决方案。到目前为止最接近的是 Terminal.app 的命令文件,但它在第一行打印命令文件的路径,并且也仅适用于 Terminal.app。
【问题讨论】:
-
这里的部分问题是您需要一个 shell 来运行。您不只是尝试使用传递的参数启动可执行文件,而是尝试实际解释另一种语言。为此,您将需要 Terminal.app、XQuartz.app 等,除非您愿意在 C++ 中实现自己的 shell 或在您的项目。但就目前而言,这个问题似乎太宽泛了。
-
也许我不清楚。我完全想要一个 shell 来解释我发送的内容。所有解决方案的问题是字符串没有完美转发。
-
那么您想打开 Mac OS 终端应用程序并在 UI 中逐行运行一些 bash 脚本吗?听起来您不想从您的问题中依赖 Terminal.app。
-
也许我只是不明白你的问题,但也许简单的
std::system就是你要找的? -
@scohe001 是的。 (虽然不确定你的意思是逐行)。 “获取一个字符串并在终端中运行它,就像我自己输入一样”。