A questão principal aqui parece ser que você está atribuindo a variável XML
dentro de um shell chamado de xargs
, mas você tenta usar a variável do script principal. Isso não funcionará, já que não há como o subprocesso passar a variável diretamente para o shell pai.
Em vez disso, você precisará imprimir o valor ou usá-lo no mesmo shell.
Do script, parece-me que o que você quer fazer é isto:
xmlstarlet fo -D "FILE" | xmlstarlet sel -t -c "concat('JD',/root/item1,/root/item2)"
ou com o sh -c
sh -c 'xmlstarlet fo -D "FILE" | xmlstarlet sel -t -c "concat('\''JD'\'',/root/item1,/root/item2)"'
Embora a citação fique horrível, pode valer a pena colocar isso dentro de outro script, ou em uma variável (seja apenas a string ou a coisa toda em uma matriz).
Além disso, não tenho certeza do que você quer fazer com a saída do xmlstarlet
na primeira linha, se ela for chamada várias vezes.
Em vez de ls /data/VT60000* | xargs
, você pode usar printf "%s%code%" * | xargs -0
para evitar problemas com nomes de arquivos problemáticos.