编辑:我原来的答案是假设“一些字符串”的意思是“任何字符串”。如果你需要寻找一个特定的,Perl 可能是你最好的选择,因为在 REGEX 匹配方面几乎没有什么能比 Perl 更好。
然而,如果你因为任何原因不能使用 Perl(你可以期望 Perl 存在于大多数 Linux 发行版中,但没有人强迫用户安装它,尽管 Perl 可能不可用),你可以在grep。但是,到目前为止我看到的一些 grep 解决方案不是最理想的(它们比必要的要慢)。在这种情况下,我宁愿执行以下操作:
MATCH=''; while [[ "e$MATCH" == "e" ]]; do MATCH=`COMMAND | grep "SOME_STRING"`; done; echo $MATCH
将COMMAND替换为要运行的实际命令,将SOME_STRING替换为要搜索的字符串。如果在 COMMAND 的输出中找到 SOME_STRING,则循环将停止并打印找到 SOME_STRING 的输出。
原始答案:
可能不是最好的解决方案(我不是一个好的 bash 程序员),但它会起作用:-P
RUN=''; while [[ "e$RUN" == "e" ]]; do RUN=`XXXX`; done ; echo $RUN
只需将 XXXX 替换为您的命令调用,例如尝试使用“ echo ”,它将永远不会返回(因为 echo 永远不会将任何内容打印到标准输出),但是如果您使用“ echo test ”,它将立即终止并最终打印出 test。