Problema com codificação no shell script

4

Eu tenho o seguinte código:

#!/bin/bash
task=$1
xml=$(curl -sL "http://login:[email protected]/issues/$task.xml")
id=$(xmllint --xpath '//issue/id/text()' --format - <<<"$xml")
name=$(xmllint --xpath '//issue/subject/text()' --encode utf8 - <<<"$xml")

echo "task #$id - $name"

Mas quando eu executo eu recebo um texto cirílico codificado assim:

task #10014 - &#x41B;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x43D;&#x43E;&#x43C;&#x435;&#x440; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;

Por favor, ajude a consertá-lo. Eu não quero este texto codificado

    
por almost_done 28.03.2016 / 18:34

1 resposta

4

Depois de alguns minutos de luta com xmllint , eu costumo desistir e acabo usando xmlstarlet , o que geralmente é mais inclinado a fazer o que você espera que ele faça. Aqui:

xmlstarlet sel -t -v '//issue/subject' <<< "$xml"

(ou < rant > desista totalmente em XML e use um formato mais sensato < / rant >).

    
por 28.03.2016 / 21:00