ファイルを1行ずつ読み、条件が合えば最後まで読み続けます。

ファイルを1行ずつ読み、条件が合えば最後まで読み続けます。

scp2つの異なる場所と異なるサーバー上のユーザープロンプトの日付ファイルをインポートしたいと思います。これが私がこれまでにしたことです。ファイルから定数を読み取り、if条件を使用して条件を指定しようとしています。

  • path1( /nrtrdepath/) にはファイルが 1 つあります。
  • パス2(/dcs/arch_05/AUDIT_REPORT/SL_AUDIT_REPORT/)2つのファイル

すべてのファイルはscp1つの場所になければなりません。


修正するパスワード

#=================================
#description     :This script will scp user prompted SL audit files to another SCP /tmp/SL_Audit_Report/ path .
#author          :Prabash
#date            :20170902
#================================



true > /home/cmb/SL__scripts/Prabash/list2.txt

read -p "Enter Date " n

ls -lrt /nrtrdepath/ | awk {'print $9'} | grep AuditReport_SL_nrtrde_$n.csv >> /home/cmb/SL__scripts/Prabash/list2.txt
ls -lrt /dcs/SL_AUDIT_REPORT/ | awk {'print $9'} | grep  AuditReport_SL_ICT_$n.csv.gz >> /home/cmb/SL__scripts/Prabash/list2.txt
ls -lrt /dcs/SL_AUDIT_REPORT/ | awk {'print $9'} | grep  AuditReport_SL_BI_$n.csv.gz >> /home/cmb/SL__scripts/Prabash/list2.txt

k=`cat /home/cmb/SL__scripts/Prabash/list2.txt`

while IFS= read -r k ; do
if [[ $k == AuditReport_SL_nrtrde* ]] ; then
    scp /nrtrdepath/$k [email protected]:/tmp/SL_Audit_Report/
    else
    for i in $k; do scp /dcs/SL_AUDIT_REPORT/$i [email protected]:/tmp/SL_Audit_Report/
fi
done

答え1

あなたがしたいのは、日付文字列に基づいて3つのファイルを選択し、scpそのファイルを別の場所に保存するようです。これは次の方法で行うことができます。

#!/bin/sh

thedate="$1"

scp "/nrtrdepath/AuditReport_SL_nrtrde_$thedate.csv" \
    "/dcs/SL_AUDIT_REPORT/AuditReport_SL_ICT_$thedate.csv.gz" \
    "/dcs/SL_AUDIT_REPORT/AuditReport_SL_BI_$thedate.csv.gz" \
    [email protected]:/tmp/SL_Audit_Report/

あなたはこれを実行します

$ sh ./script "datestring"

datestringファイル名の日付として使用する文字列はどこにありますか?

scp同様に、複数のファイルを1つの場所にコピーできるため、これは機能します。cp

いくつかのエラーチェックでは、次のことを行います。

#!/bin/sh

thedate="$1"

if [ ! -f "/nrtrdepath/AuditReport_SL_nrtrde_$thedate.csv" ]; then
    printf 'AuditReport_SL_nrtrde_%s.csv is missing\n' "$thedate" >&2
    do_exit=1
fi
if [ ! -f "/dcs/SL_AUDIT_REPORT/AuditReport_SL_ICT_$thedate.csv.gz" ]; then
    printf 'AuditReport_SL_ICT_%s.csv is missing\n' "$thedate" >&2
    do_exit=1
fi
if [ ! -f "/dcs/SL_AUDIT_REPORT/AuditReport_SL_BI_$thedate.csv.gz" ]; then
    printf 'AuditReport_SL_BI_%s.csv is missing\n' "$thedate" >&2
    do_exit=1
fi

if [ "$do_exit" -eq 1 ]; then
    echo 'Some files are missing, exiting' >&2
    exit 1
fi

if ! scp "/nrtrdepath/AuditReport_SL_nrtrde_$thedate.csv" \
         "/dcs/SL_AUDIT_REPORT/AuditReport_SL_ICT_$thedate.csv.gz" \
         "/dcs/SL_AUDIT_REPORT/AuditReport_SL_BI_$thedate.csv.gz" \
         [email protected]:/tmp/SL_Audit_Report/
then
    echo 'Errors executing scp' >&2
else
    echo 'Transfer is done.'
fi

答え2

ファイルに変数の割り当てがある場合は、ファイルをインポートして有効にできます。

source /path/to/config_file

関連情報