2017-06-06 18 views
0

私はGradsスクリプト言語で天気モデルチャートを作成していますが、bashスクリプトを使用しているので、whileループを使用してモデルデータをダウンロードできます(grib2形式)、モデル実行時に各フレームのgradsスクリプトを呼び出します。今、私は特定の予測時間のすべてのスクリプトを実行し、FTP経由で画像出力をアップロードするループを持っています。このforループが完了すると、次の1時間のgrib2データがダウンロードされ、ループが再び実行されます。ファイルリストを読み込んでFTP経由でファイルを送信

for ((i=0;i<${#SCRIPTS[@]};i++)); do 
    #define filename 
    FILENAME="${FILENAMES[i]}${FORECASTHOUR}hrfcst.png" 
    #run grads script 
    /home/mint/opengrads/Contents/opengrads -lbc "run /home/mint/opengrads/Contents/plotscripts/${SCRIPTS[i]} $CTLFILE $INIT_STRINGDATE $INIT_INTDATE $INITHOUR $FILENAME $h $MODEL $MODELFORTITLE 500" 
    #run ftp script 
    #sh /home/mint/opengrads/Contents/bashscripts/ftpsample.sh $INIT_INTDATE $INITHOUR $FILENAME $MODEL 
done 

私は、単一の画像を送信するたびに開き、FTPセッションを閉じるので、これは無粋です。私はむしろ、特定の予測時間のファイル名の名前を.txtファイル(例:ループ内に "echo $ {FILENAME}" FILEOFFILENAMES.txt "をつけてください)に書いて、私のFTPスクリプトを読んで全部送るこれらのファイルは単一のセッションに含まれます。これは可能ですか?

答えて

0

可能です。あなたは、FTPスクリプトを生成するためにあなたのシェルスクリプトにこれを追加することができますし、ファイルを生成した後、それが実行している:

echo open $HOST > ftp.txt 
echo user $USER $PASS >> ftp.txt 
find . -type f -name '*hrfcst.png' -printf "put destination/%f %f\n" >> ftp.txt 
echo bye >> ftp.txt 

ftp < ftp.txt 

上記のコードは、コマンドでファイルftp.txtを生成し、FTPにそれを渡します。生成されたftp.txtは次のようになります:

open host 
user user pass 
put destination/forecast1.hrfcst.png forecast1.hrfcst.png 
put destination/forecast2.hrfcst.png forecast2.hrfcst.png 
put destination/forecast3.hrfcst.png forecast3.hrfcst.png 
... 
bye 
関連する問題