分解多个用于错误处理的sed命令

时间:2016-07-06 07:44:31

标签: linux bash sed pipe

在Linux中使用sed时,我在处理错误时遇到了一些麻烦。

我试图分解以下代码行

#sed -e "s|\${CarbonName}|$BasicName|g" /scripts/templates/artifactfile.xml| sed -e "s|\${Version}|$TotalVersion|g"| sed -e "s|\${SynapseType}|${ArtifactArray[i]}|g"| sed -e "s|\${FileName}|$FullFile|g" > ${CarDir}/${BasicName}_${TotalVersion}/artifact.xml

所以我采用了将多个sed命令分解为单个命令并使用变量将其提供给下一个命令的方法,如下所示:

varSedA1="$(sed -e "s|\${CarbonName}|$BasicName|g" /scripts/templates/artifactfile.xml)"
            varSedA2="$($varSedA1 | sed -e "s|\${Version}|$TotalVersion|g")"
            varSedA3="$($varSedA2 | sed -e "s|\${SynapseType}|${ArtifactArray[i]}|g")"
            varSedA4="$($varSedA3 | sed -e "s|\${FileName}|$FullFile|g")"
            echo "$varSedA1, $varSedA2, $varSedA3, $varSedA4"
            if [ -z "$varSedA1" ] ||  [ -z "$varSedA2" ] || [ -z "$varSedA3" ] || [ -z "$varSedA4" ]; then
                echo "error"
                exit 1
            fi
            $varSedA4 >> ${CarDir}/${BasicName}_${TotalVersion}/artifact.xml

这样我可以在写入artifact.xml之前检查流程中的任何变量是否为空

然而,我无法让它发挥作用。我使用echo行来显示所有变量,但只有第一个变量被填充。

0 个答案:

没有答案