Как передать здесь-документ по каналу посредством команды и получить результат в переменную?

Прямо сейчас это производит значение, в котором я нуждаюсь на stdout. Как я могу получить его в переменную, таким образом, я могу использовать его в остальной части сценария?

Требования:

  • Сценарий должен быть всем в одном файле.
  • Я предпочел бы не писать любые временные файлы, если это возможно.

.

#!/bin/bash

cat << EOF | xsltproc - ../pom.xml | tail -1
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"><xsl:value-of select="/project/version"/></xsl:template>
</xsl:stylesheet>
EOF
16
задан Konerak 28 February 2011 в 08:25
поделиться

2 ответа

Это кажется, работает (на основе ответа Игнасио). Используя подпункл, то здесь документ правильно подключен к XSLTProc, пока все еще передается через хвост после.

VERSION=$((xsltproc - ../pom.xml | tail -1) << EOF
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"><xsl:value-of select="/project/version"/></xsl:template>
</xsl:stylesheet>
EOF
)
13
ответ дан 30 November 2019 в 21:19
поделиться

. Cat ... | не обязательно.

foo=$(sed 's/-/_/g' << EOF
1-2
3-4
EOF
)
12
ответ дан 30 November 2019 в 21:19
поделиться