如何获取命令标准输出到变量里并保留颜色?或者能不能一边输出一边赋值或判断。

2021-02-24 11:55:53 +08:00
 jmyz0455

我有一段 bash shell script,需要循环用到好几个命令,这些命令的输出本身就是带颜色的,比如 ls 命令。

但是如果 ls 的输出为空,那么我需要提前结束循环,要注意的是如果非空,一定要输出原有命令的颜色,不然看得眼花。

所以我的需求是,既能调用一个命令,输出带颜色的结果,又能在命令输出为空时,不输出了,跳出循环。

想到几种解决方案:

  1. 用变量获取命令输出,先判断非空,再用 echo -e 输出,结果发现输出的是纯文本,颜色丢失了。
  2. 直接运行命令,输出颜色文本的同时,赋值到某个变量,但是不知道怎么弄。
  3. 直接运行命令,用管道接口结果,判断输出是否为空,非空就输出,空就跳出循环,但是用 xargs 好像也不太对。

我这个需求能实现吗?请问思路哪里不对,还是方法错了?

805 次点击
所在节点   Bash
0 条回复

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

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

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

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

© 2021 V2EX