파일을 한 줄씩 읽고, 조건이 맞으면 끝까지 계속해서 읽는다.

파일을 한 줄씩 읽고, 조건이 맞으면 끝까지 계속해서 읽는다.

scp서로 다른 두 위치와 다른 서버 에 있는 사용자 프롬프트의 날짜 파일을 가져오고 싶습니다 . 이것이 제가 지금까지 한 일입니다. 파일에서 상수를 읽고 if 조건을 사용하여 조건을 지정하려고 합니다.

  • path1( /nrtrdepath/)에는 파일이 1개 있습니다.
  • 경로 2( /dcs/arch_05/AUDIT_REPORT/SL_AUDIT_REPORT/) 2개 파일

모든 파일은 scp한 위치에 있어야 합니다.


고쳐 쓰다암호

#=================================
#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

당신이 원하는 것은 날짜 문자열을 기반으로 세 개의 파일을 선택하고 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처럼 여러 파일을 한 위치에 복사할 수 있기 때문에 이는 작동합니다 .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

관련 정보