私は現在、FTPサーバーにログインして毎日ファイルをダウンロードするという仕事をしているbashスクリプトを持っています。ファイル名の一部は1日(DOY)です。だから私は現在の日付を取得し、%j
オプションを使用してDOYを取得します。ここに私のコードのスニペットがあります:年を取得し、ファイル名の一部としてDOYを使用してファイルをダウンロードする
doy=$(date +%j)
mget filename_$doy*
このスクリプトを実行すると、それは現在のDOYのファイルだけでなく、それらのファイルもすべて取得されます。だから今日はDOY 260なら0から260までのすべてのファイルを取得します。私はちょうど260を望みます。私のbashスクリプトの残りの部分は、次のWebサイトのモックアップです:Automatic/periodic FTP download using cron jobs。私は間違って何をしていますか?
EDIT:@rednebあたりの全スクリプトの要求
#!/bin/bash
HOST='ftp.server' # change the ipaddress accordingly
USER='user' # username also change
PASSWD='pass' # password also change
ftp -inv $HOST<<EOF
quote USER $USER
quote PASS $PASSWD
bin
cd /filedirectory/
doy=$(date +%j)
mget filename_$doy*
bye
EOF
EDIT 2:@Cyrus「答えは働きました。他の誰かが助けを必要とする場合に備えて、私の最後の作業スクリプトです。 FTPサーバーにログインする前に、bashコマンドを入力する必要があります。ありがとう!
#!/bin/bash
HOST='ftp.server' # change the ipaddress accordingly
USER='user' # username also change
PASSWD='pass' # password also change
doy=$(date +%j)
ftp -inv $HOST<<EOF
quote USER $USER
quote PASS $PASSWD
bin
cd /filedirectory/
mget filename_$doy*
bye
EOF
前に移動ラインに
'mget filename_ *'と同じです(つまり、 '$ doy'は空の文字列として扱われます)。 'mget'行の前に' echo $ doy'を追加することでこの理論をテストできます。 – redneb
Hmmm、はい私は 'echo $ doy'と' printf $ doy'の両方を試しましたが、何も出力しませんでした。 '$ doy'が' mget'になったらまだ設定されていない場合、どのように修正できますか?コメントありがとう。 – Stratix
あなたのお手伝いをするために、スクリプト全体を投稿する必要があります。 – redneb