Я хочу получить исходный цветной вывод команды в переменной, которую я могу распечатать.
У меня есть следующий сценарий:
#Colors
RED='\033[0;31m'
NC='\033[0m' # No Color
# Runing test cases
res=$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js")) #Command that runs test cases
RESULT=$?
[ $RESULT -ne 0 ] && echo -e "$res ${RED}Some TestCaes did not pass. Please check your code.${NC}" && exit 1
echo "All test cases passed.\n"
exit 0
Это дает мне после вывода:
Some TestCaes did not pass. Please check your code.:13:16)
где :13:16)
часть является некоторыми последними знаками вывода этой команды res=$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js"))
.
Выполнение mocha $(find "tests/non-ui" -name "*.js")
одна только эта команда дает следующий вывод:
All element creation test:
1) Label
0 passing (16ms)
1 failing
1) All element creation test: Label:
AssertionError: false == true
+ expected - actual
-false
+true
at Context.<anonymous> (tests/non-ui/sample-test.js:13:16)
Как я могу получить целый вывод в переменной?
Добавьте двойные кавычки вокруг своих команд:
res="$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js"))"
echo "$res"
Это сохранит цвета ANSI.