Obtenha a saída colorida do comando em uma variável

0

Eu quero obter a saída colorida original do comando em uma variável que eu possa imprimir.

Eu tenho o seguinte script:

#Colors
RED='3[0;31m'
NC='3[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

Isso me dá a seguinte saída:

Some TestCaes did not pass. Please check your code.:13:16)

onde :13:16) part são alguns dos últimos caracteres de saída deste comando res=$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js")) .

A execução de mocha $(find "tests/non-ui" -name "*.js") deste comando, por si só, fornece a seguinte saída:

  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)

Como posso obter uma saída inteira em uma variável?

    
por chandil03 08.06.2017 / 13:35

1 resposta

1

Adicione aspas duplas em torno dos seus comandos:

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

echo "$res"

Isso preservará as cores ANSI.

    
por Simon Sudler 08.06.2017 / 14:43