【问题标题】:How to NSLog to shell console如何 NSLog 到 shell 控制台
【发布时间】:2015-09-23 22:16:34
【问题描述】:

我写了一个命令行实用程序。我正在使用以下命令打印到系统控制台: 在 MyApp main.m 中,我使用 NSLog 打印 Hello World。

NSLog("Hello World");

在 shell 脚本中我这样做:

someVar = `pathTo/MyApp`
echo $someVar

上面在终端打印 Hello world 但 echo 似乎打印不一样。

如何将其输出到 bash shell 控制台?

【问题讨论】:

  • NSLog 用日期、主机名、进程名和 PID 写入您的消息。这就是您想要通过echo 实现的目标吗?
  • 或者你的意思是消息被打印到终端但是$someVar是空的?
  • @zneak 消息被打印到终端,但 $someVar 为空

标签: macos bash shell


【解决方案1】:

NSLog 打印到 stderr,但 shell 反引号语法仅捕获 stdout。你需要redirect stderr to stdout:

someVar=`pathTo/MyApp 2>&1`
echo $someVar

【讨论】:

  • 谢谢。如果 MyApp 接受参数,如何修改上述内容?即 someVar=pathTo\MyApp arg1 arg2 2>&1
  • 完全按照您的建议。不过不要忘记使用正斜杠而不是反斜杠。
  • 谢谢。现在我看到的问题是 - 当我回显时,shell 脚本会打印文件夹/文件名,并且不尊重新行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多