我有一段 bash shell script,需要循环用到好几个命令,这些命令的输出本身就是带颜色的,比如 ls 命令。
但是如果 ls 的输出为空,那么我需要提前结束循环,要注意的是如果非空,一定要输出原有命令的颜色,不然看得眼花。
所以我的需求是,既能调用一个命令,输出带颜色的结果,又能在命令输出为空时,不输出了,跳出循环。
想到几种解决方案:
- 用变量获取命令输出,先判断非空,再用
echo -e输出,结果发现输出的是纯文本,颜色丢失了。 - 直接运行命令,输出颜色文本的同时,赋值到某个变量,但是不知道怎么弄。
- 直接运行命令,用管道接口结果,判断输出是否为空,非空就输出,空就跳出循环,但是用 xargs 好像也不太对。
我这个需求能实现吗?请问思路哪里不对,还是方法错了?
