在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
行来显示所有变量,但只有第一个变量被填充。