gpt4 book ai didi

bash - 如何在 POSIX shell 中测试命令输出是否为非空?

转载 作者:行者123 更新时间:2023-11-29 08:57:20 26 4
gpt4 key购买 nike

如何有效地检查任意命令是否在 POSIX shell 中产生了任何输出? (假设 git ls-files --killed。)

有三种明显的方式,但在我看来每一种都显得丑陋或邪恶:

  1. [ -n "$(git ls-files --killed)"] - 命令的完整输出必须在内存中捕获并传递给测试 (至少希望是内置的)
  2. [ "$(git ls-files --killed | wc -c)"-gt 0 ] - 涉及两个 fork-exec
  3. TMP=$(临时文件); git ls-files --killed >"$tempfile"; [ -s "$tempfile"] && ...; rm "$tempfile" - 需要一个中间临时文件(同样捕获所有输出)

最佳答案

您还可以检查命令的退出状态。通常,命令如果成功运行,返回退出状态 0。

git ls-files --killed > /dev/null
if [ $? -eq 0 ]

或者如果您只想依赖命令的输出,您可以将“head -1”与第一个选项一起使用,因为无论如何看起来您没有对您的命令进行任何处理命令输出除了知道结果。

关于bash - 如何在 POSIX shell 中测试命令输出是否为非空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com