私たちはkornシェルを使います。要件は、2つのInformaticaジョブがtstampを使用して4つのファイルを生成するため(各infaジョブは2つのファイルを生成するため)、1.ttmm_rels_prspt.ctl_tstamp 2.ttmm_rels_prspt.lsf_tstamp 3. ttmm_rels_rfc.ctl_ts ttmm_rels_rfcだとしましょう。 scf_tstamp..so ファイルは opt/etl/tgtfiles パスに生成されます。 ttmm_relsは4つのファイルの共通接頭辞です。サーバーに4つのファイルが作成されたら、ファイル名を含む成功を知らせるEメールを送信する必要があります。そして、ファイル名をprocessd_filenameに変更する必要があります。そのため、名前を「処理済み」に変更したため、翌日サーバーから同じファイルを取得できません。 1つのinfa操作が失敗すると、サーバーには2つのファイルしか残りません。したがって、2つのファイル名を含む成功したEメールを送信し、2つのファイル名を処理するように変更し、他の2つのファイルに対して遅延メールも送信します(1つのinfa操作が失敗した場合は合計2つのEメールを送信します)。 infa ジョブを再実行するときは、次のことを行う必要があります。正常に電子メールを再送信し、ファイル名を processd_filename に変更します。
ベストアンサー1
仮定bash
:
shopt -s nullglob
files=( ttmm_rels* )
if [[ -n "$files" ]]; then
msg="$(printf '%s\n' "${files[@]}")"
subj="Success"
else
msg="Sorry, no files yet"
subj="Delay"
fi
printf '%s\n' "$msg" | mail -s "$subj" [email protected]
ksh93
シェルオプションがない場合は、nullglob
ワイルドカードパターンが一致するものをテストする必要があります。
files=( ttmm_rels* )
if [[ "${#files}" == 1 && "$files" == "tmm_rels*" && ! -f "ttmm_rels*" ]]; then
msg="Sorry, no files yet"
subj="Delay"
else
msg="$(printf '%s\n' "${files[@]}")"
subj="Success"
fi
printf '%s\n' "$msg" | mail -s "$subj" [email protected]