17

現在、これは標準出力に必要な値を出力します。スクリプトの残りの部分で使用できるように、変数にキャプチャするにはどうすればよいですか?

要件:

  • スクリプトはすべて 1 つのファイルに収める必要があります。
  • 可能であれば、一時ファイルを書き込まないことをお勧めします。

.

#!/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
4

4 に答える 4

13

cat ... |必要ありません。

foo=$(sed 's/-/_/g' << EOF
1-2
3-4
EOF
)
于 2010-01-24T21:39:10.423 に答える
13

これはうまくいくようです(Ignacioの回答に基づく)。サブシェルを使用することで、ヒアドキュメントは 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
)
于 2010-01-24T21:57:37.090 に答える