用 Swift 写 CLI 遇到的问题

2022-11-17 17:47:15 +08:00
 sjsurf

公司的项目在组件化的路上越走越远,每次推组件代码到仓库要敲好多命令,所以就有了写个 CLI 的想法。今天遇到了个问题是,git push 返回的结果,没有在 stdout 而是,stderr.

由于我会判断 stdout 就抛错误的。导致我之前写的很多逻辑就作废了。

这只是一个 bug ?还是说有什么特定的含义呢

1358 次点击
所在节点    git
9 条回复
zhanglintc
2022-11-17 17:59:40 +08:00
打到 stderr 可能就是想相对而言更容易被你看到?
sjsurf
2022-11-17 18:02:37 +08:00
@zhanglintc 可是我就没有办法区分这到底是成功了还是失败。pod 也是,out 和 err 都有相应的数据。
zthxxx
2022-11-17 18:10:08 +08:00
exit code 才表示成功失败,stdout stderr 都只是标准输入输出通道的一种

stderr 叫做 stdwarn 大多数人更容易理解
zthxxx
2022-11-17 18:10:30 +08:00
这种事情找运维来写吧
sjsurf
2022-11-17 18:16:09 +08:00
@zthxxx 刚才刷 stackoverflow 看到了相关的描述,实验了一下也确实是的。感谢!我司没有运维,我也就是拿来练手而已。
zhanglintc
2022-11-17 19:42:55 +08:00
确实,可以看 exit code 。
看 stdout ,stderr 的话,可能要匹配字符串具体内容。
v2defy
2022-11-17 21:13:52 +08:00
我也是前几天才知道,git clone 的进度信息会显示在 stderr ,貌似 curl 也是,感觉是为了不污染 stdout 。

这样在使用管道操作的时候,进度信息就不会被管道传递过来,也是非常机智了。
agagega
2022-12-03 22:46:32 +08:00
你试试 git push > result.txt 就知道了,一些信息还是会显示在终端上,因为它们是输出到 stderr 的
sjsurf
2022-12-07 16:03:36 +08:00
@agagega 是的,所以判断是否执行成功,需要判断返回的 Int 值是什么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX