如何通过脚本检测命令行上的文本颜色?

时间:2014-11-04 08:50:40

标签: linux shell command-line console

我有一个命令行程序,根据状态输出不同颜色的文本。 文本在多次调用时没有变化,但颜色会发生变化。

例如:程序在控制台上输出文本“S14789”。 如果状态失败,则该文本的颜色将为红色,如果通过则为绿色(

我需要根据颜色(状态)编写一个脚本来做其他事情。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

由于脚本一次给出一个值,您可以修改脚本以将退出值更改为0(如果通过)和1(如果通过)。

#!/bin/bash

echo "Print in green"
exit 0

$ ./script1.sh
Print in green
$ echo $?
0

使用exit 1返回值1?变量的方法相同,您可以使用它来确定脚本是通过还是失败。

答案 1 :(得分:0)

所以,这是我根据颜色输出执行任务所做的:

/usr/bin/smoke是我的程序,它输出特定颜色的文本。搜索颜色转义序列并执行任务(感谢@Jidder建议cat -v)。

#!/bin/bash

COUNT=`/usr/bin/smoke | cat -v | fgrep "^[[32" | wc -l`
if [ $COUNT -gt 0 ] 
then
    #Color found, do something
else
    #Color not found, do something else
fi

注意:32代表绿色。对于其他颜色,请参阅转义序列列表:http://wiki.bash-hackers.org/scripting/terminalcodes#general_useful_ascii_codes