我有一个命令行程序,根据状态输出不同颜色的文本。 文本在多次调用时没有变化,但颜色会发生变化。
例如:程序在控制台上输出文本“S14789”。 如果状态失败,则该文本的颜色将为红色,如果通过则为绿色(
)我需要根据颜色(状态)编写一个脚本来做其他事情。有什么建议吗?
答案 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