必要なファイルをすべてダウンロードした場合のシェルスクリプトのチェックイン方法

必要なファイルをすべてダウンロードした場合のシェルスクリプトのチェックイン方法

SFTP経由でリモートサーバーからファイルをダウンロードしました。今、私のすべてのファイル(与えられたnodeid)がダウンロードされたことを確認したいと思います。ダウンロードされていない場合は、sendmailを介して警告メッセージが表示されます。

ファイル形式:

"$today_date"_MPS_Cust_dump_"$nodeid".list.Z

today_date=date +%Y%m%d
declare -a nodeid=("302" "303" "304" "305" "311" "312" "313" "314" "315" "316" "317" "318" 
  "410" "411" "412" "415" "416" "418" "431" "432" "433" "434" "435" "436" "407" "408" "409" 
  "401" "402" "420" "421" "422" "425" "426" "427" "403" "404" "405" "406"
)

答え1

これを使用してください:

today_date="$(date +%Y%m%d)" # use $(...) to assign the output of a command to a variable
declare -a nodeid=(...)

for id in "${nodeid[@]}"; do
  [ -e "${today_date}_MPS_Cust_dump_${id}.list.Z" ] || echo "$id is not downloaded"
done | mail -E -s "Subject" [email protected]

  • forループは配列内の各項目を繰り返しますnodeid
    • [ -e "..." ]現在のディレクトリに特定の名前のファイルが存在することを確認します。
    • || echo "..."ファイルが存在しない場合は、メッセージを印刷します。
  • | mail ...すべてが配管され、トピックが定義mail-sれ、-E本文が空で(すべてのファイルが存在する)、最後のパラメータがアドレスの場合、メールは送信されません。

答え2

そのファイルを一時フォルダにダウンロードした後、ダウンロードが完了したら、目的のフォルダに移動することをお勧めします。
これにより、目的のフォルダ内のすべてのファイルが完全にダウンロードされたことがわかります。

関連情報