【发布时间】:2013-01-25 00:36:13
【问题描述】:
如果我将 AppleScript 压缩为一行,我如何将其封装在 C 程序的 echo system 调用中运行?我尝试过的所有格式都会导致错误:(单引号、双引号、各种括号等...)
如果不清楚,我有一个 C 程序,它使用 fgets() 来捕获输入。当我尝试在系统命令中回显时,例如echo ' && foo bar && $? ' 它通常可以工作。但是,如果我想直接在 AppleScript 中 echo,我似乎无法降低格式。有什么想法吗?
FWIW 这是我正在尝试的:
echo ' && "osascript -e 'tell application "Terminal"' -e 'do script "foo bar"' -e 'end tell'" && $?'
上面的示例回显了单引号中包含的所有内容并“打印”它,但不执行它。我尝试了许多关于报价的变体等,但无济于事。此外,osascript ... 'end tell' 之间直接在终端中运行时有效。
感谢任何帮助!
编辑
这是 C 代码的 sn-p:
char comment[80];
char cmd[120];
fgets(comment, 80, stdin);
sprintf(cmd, "echo '%s %s' >> reports.log", comment, now());
system(cmd);
编辑两个...更改标题以更准确
【问题讨论】:
-
你能发布一个可运行的例子而不是
foo bar吗? -
当然。几乎任何 bash 脚本都可以运行似乎...
echo ' && pwd && $? '是一个可以通过我的 C 程序运行的简单脚本。同样,echo && pwd && $?直接在终端中工作。 -
@JoshCaswell 哦,对于 AppleScript,这样的东西将在终端中运行:
echo && osascript -e 'tell application "Terminal"' -e 'do script "pwd"' -e 'end tell'...显然我无法通过程序使用 echo -
你是如何将它包含在你的 C 代码中的?
-
标签: c macos scripting terminal applescript