2014-11-04 57 views
0

我有一個命令行程序,根據狀態輸出不同顏色的文本。 多次調用的文本不會改變,但其顏色會發生變化。如何通過腳本檢測命令行上的文本顏色?

例如:程序在控制檯上輸出文本「S14789」。 如果狀態爲失敗,則此文本的顏色爲紅色,如果通過則爲綠色

根據顏色(狀態),我需要編寫一個腳本來執行其他操作。有什麼建議麼?

+0

嘗試過任何操作? – 2014-11-04 09:08:26

+0

腳本是否只返回一次運行的值,或者它不斷以不同顏色返回文本? – 2014-11-04 09:09:24

+0

將它管入cat -v並查看轉義序列是什麼,有很多方法在linux上對文本進行着色 – 2014-11-04 09:17:48

回答

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

0

由於腳本一次給出一個值,所以您可以修改腳本以將退出值更改爲0(如果它是通過的話)和1(如果它是通過的話)。

#!/bin/bash 

echo "Print in green" 
exit 0 

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

可以使用exit 1其返回值1?變量,你可以用同樣的方式來確定腳本是否合格或不合格。

+0

我無法控制腳本(它實際上是一個ELF二進制),它返回我需要檢查的值。我需要使用它的輸出並編寫一個腳本來根據輸出做一些其他的事情 – 2014-11-04 10:12:32

+0

在這種情況下,獲取輸出命令並將其傳遞給cat命令。 '<你的命令> | cat -v' – 2014-11-04 10:21:55

相關問題