쉘 스크립트에서 if 함수를 사용하는 방법은 무엇입니까?

쉘 스크립트에서 if 함수를 사용하는 방법은 무엇입니까?

SFTP를 사용하여 원격 서버에서 내 서버로 파일을 복사할 때만 if 함수를 사용하여 필요한 파일을 필터링해야 합니다. 이것은 내부의 모든 데이터를 얻으려는 나의 시도입니다 /filesnew.

#!/bin/bash


files=`sshpass -p 'XXX' sftp -P 2222 [email protected]<<EOF
cd /filesnew
ls
EOF`

files=`echo $files|sed "s/.*sftp> ls//"`



(
  echo cd /filesnew
  for file in $files; do
    echo get $file /data/processedfiles/$file
  done
) |sshpass -p 'XXX' sftp -P 2222 [email protected]

필터링 해야 합니다 "USER".

ex:
If($files==*USER*) then
echo get $file /data/processedfiles/$file

누군가 이 작업을 수행하는 방법을 말해 줄 수 있습니까?

답변1

sftp패턴( /filesnew/USER*디렉토리에서 리터럴 문자열로 시작하는 파일 이름)과 일치하는 모든 파일을 가져오고 이를 디렉터리에 로컬로 저장하는 데 사용됩니다 .USER/filesnew/data/processedfiles

mkdir -p /data/processedfiles || exit

sftp -P 2222 [email protected] <<'END_SFTP'
get /filesnew/USER* /data/processedfiles
END_SFTP

이러한 파일을 나열할 이유가 없습니다. 또한 localhost의 대상 파일 이름을 언급할 필요가 없으며 대상 디렉터리만 현재 디렉터리와 다른 경우에만 언급할 수 있습니다.

mkdir로컬 대상 디렉터리가 항상 존재한다고 확신하는 경우 초기 명령을 건너뛸 수 있습니다.

참고로, 이는 쉘의 함수가 아니라 "문"의 일부인 if"예약어" 라는 점을 언급할 가치가 있을 것입니다.if

관련 정보