Получите команду, окрашенную выводом в переменной

Я хочу получить исходный цветной вывод команды в переменной, которую я могу распечатать.

У меня есть следующий сценарий:

#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)

Как я могу получить целый вывод в переменной?

1
задан 8 June 2017 в 14:35

1 ответ

Добавьте двойные кавычки вокруг своих команд:

res="$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js"))"

echo "$res"

Это сохранит цвета ANSI.

1
ответ дан 7 December 2019 в 15:34

Другие вопросы по тегам:

Похожие вопросы: