シェルスクリプトで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

おすすめ記事