我有一個命令行程序,根據狀態輸出不同顏色的文本。 多次調用的文本不會改變,但其顏色會發生變化。如何通過腳本檢測命令行上的文本顏色?
例如:程序在控制檯上輸出文本「S14789」。 如果狀態爲失敗,則此文本的顏色爲紅色,如果通過則爲綠色
根據顏色(狀態),我需要編寫一個腳本來執行其他操作。有什麼建議麼?
我有一個命令行程序,根據狀態輸出不同顏色的文本。 多次調用的文本不會改變,但其顏色會發生變化。如何通過腳本檢測命令行上的文本顏色?
例如:程序在控制檯上輸出文本「S14789」。 如果狀態爲失敗,則此文本的顏色爲紅色,如果通過則爲綠色
根據顏色(狀態),我需要編寫一個腳本來執行其他操作。有什麼建議麼?
所以,這裏是我做過什麼取決於色彩輸出來執行任務:
/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(如果它是通過的話)和1(如果它是通過的話)。
#!/bin/bash
echo "Print in green"
exit 0
$ ./script1.sh
Print in green
$ echo $?
0
可以使用exit 1
其返回值1
到?
變量,你可以用同樣的方式來確定腳本是否合格或不合格。
我無法控制腳本(它實際上是一個ELF二進制),它返回我需要檢查的值。我需要使用它的輸出並編寫一個腳本來根據輸出做一些其他的事情 – 2014-11-04 10:12:32
在這種情況下,獲取輸出命令並將其傳遞給cat命令。 '<你的命令> | cat -v' – 2014-11-04 10:21:55
嘗試過任何操作? – 2014-11-04 09:08:26
腳本是否只返回一次運行的值,或者它不斷以不同顏色返回文本? – 2014-11-04 09:09:24
將它管入cat -v並查看轉義序列是什麼,有很多方法在linux上對文本進行着色 – 2014-11-04 09:17:48