xmlファイルを読み取るアプリケーションのリリースバージョンを特定しようとしています。シェルスクリプトを使用してxmlファイルを読み取るアプリケーションのリリースバージョンを確認しようとしています
ファイル:/u01/app/inventory/ContentsXML/comps.xml
grep -Po '(?<=VER=)[^ ]*' /u01/app/inventory/ContentsXML/comps.xml |head -1 |sed -e 's/^"//' -e 's/"$//'
11.13.17.08.0
別のバージョン
grep -Po '(?<=VER=)[^ ]*' /u01/app/inventory/ContentsXML/comps.xml |head -1 |sed -e 's/^"//' -e 's/"$//
11.12.0.0.0
が、これは、スクリプト(コードスニペット)で使用されている方法です
REL_VER=`grep -Po '(?<=VER=)[^ ]*' /u01/app/inventory/ContentsXML/comps.xml |head -1 |sed -e 's/^"//' -e 's/"$//'`
if [[ $REL_VER =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}\.[0]{1,}$ ]]; then
echo "Identified as Release 13" | tee -a ${OUT_FILE}
${ROOT}/r13patch.sh >>${OUT_FILE} 2>&1
else
echo "Not a Release 13 Skipping Patching" | tee -a ${OUT_FILE}
場合によってはバージョンを正確に検出しており、インストールスクリプトが開始されていますが、場合によっては11.12.1.0.0
要求の専門家は、11.13.17.08.0と11.13.xxxの他の組み合わせをリリース13として識別する必要があるように、スクリプトの可変マッチング部分を絞り込むのに役立ちます。別のリリースとみなされます。たとえば、11.11.x.x.xまたは11.12.x.x.xまたは11.10.x.x.x 12.11.x.x.xに似た値は、スクリプトの「Release 13 Skip Patching Not」に移動する必要があります。彼らが言うように、XMLファイルの
あなたの答えてくれてありがとう
はカットと同じように使用されるが、ここで更新するのを忘れ、
REV_FILE1=/u01/app/inventory/ContentsXML/comps.xml
REV_FILE2=/u01/APPLTOP/app/inventory/ContentsXML/comps.xml
if [ -f ${REV_FILE1} ]; then
REL_VER=`grep -Po '(?<=VER=)[^ ]*' ${REV_FILE1} |head -1 |sed -e 's/^"//' -e 's/"$//'|cut -d"." -f1-2`
elif [ -f ${REV_FILE2} ]; then
REL_VER=`grep -Po '(?<=VER=)[^ ]*' ${REV_FILE2} |head -1 |sed -e 's/^"//' -e 's/"$//'|cut -d"." -f1-2`
else
log_warn "Unable to identify release version"
fi
if [[ ! -z ${REL_VER} && ${REL_VER} == 11.13 ]]; then
log_info "Identified as R13"
${ROOT}/r13patch.sh >>${OUT_FILE} 2>&1
if [ $? -eq 0 ] ; then
log_info "R13 APP Patching finished successfully"
else
log_crit "R13 APP Patching failed"
fi
else
log_info "Not a Release 13 Skipping Patching"
このxmlファイルの関連コンテンツを投稿できますか? – R4F6
実際のXMLパーサーで読むのに十分な完全なファイルの例を提供できますか?xmlstarlet、xmllint、xsltproc、および実際にXML *を理解するコマンドラインツールを使用して回答を作成できますか? –
BTW - all-caps変数名は、シェル自体やPOSIX定義のツール*との意味を持つシェル変数や環境変数*に使用されます。 POSIX標準では、アプリケーションの使用時に小文字の名前が予約されているので、スクリプトは偶然にシェルの動作を変更することを心配せずに小文字の名前を使用できます。 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html第4段落を参照してください。 –