2017-11-12 3 views
0

ディレクトリ内のサブディレクトリのダウンロードを自動化しようとしています。ただし、スクリプトを実行すると、最後の1つまたは2つのディレクトリがスクリプトによって見つかりません - 「No such file or directory」。他のすべてはうまくやってダウンロードできます。これは私がこれを試したすべてのディレクトリで発生します。なぜ、最後の2つのディレクトリが見つからないのですか? 誰もがこれを助けることができますか?それはループに起因するのでしょうか?私は最後のものだけをループするように変更しようとしましたが、これは助けになりません。または、それはarray=($l)の変換によるものでしょうか?"そのようなファイルやディレクトリはありません"しかし、そこにあります。シェルのスクリプトがフォルダの配列をループする

は、ここに私のスクリプトです:

SSHから来ている:

dirServer=/dir/to/location/in/server 
dirLocal=/dir/to/location/in/local/pc 

l=`ssh -t [email protected] 'ls' ${dirServer}` 

#array of folders that should be copied to local machine 
array=($l) 


for folder in ${array[@]} 
do 
    echo ${folder} 

    #if directory doesn't exist, creat it 
    mkdir -p ${dirLocal}${folder} 
    scp -r [email protected]:${dirServer}${folder}/analysis/ ${dirLocal}${folder} 
done 
+0

どのコマンドがエラーメッセージを生成していて、どのディレクトリで不平を言っていますか?あなたの質問を編集して、このスクリプトが動作するファイルのリストのサンプルを含めることができますか? – Kenster

+0

'scp'がエラーを生成します。スクリプトが動作するファイルはフォルダです。 – aces

答えて

-1

は、この "-oのLogLevel = QUIET"

l=`ssh -o LogLevel=QUIET -t [email protected] 'ls' ${dirServer}` 

説明を含む次の行を変更してください。 -tスイッチを指定したため、SSHに強制的に接続用の擬似端末を割り当てます。伝統的に、SSHは、あなたがもはやリモートホスト上のシェルと対話していないことを明確にするメッセージを表示します。これは通常、SSHに擬似端末が割り当てられている場合にのみ問題です。

+0

私はシミュレーションを行いましたが、私の場合、問題はsshコマンドの戻りによって生成されました。 sshが "に接続しました"というメッセージを閉じたとき。が示されている。 サーバーフォルダ構造のサンプルをここに置くことはできますか? $ {dirServer}と$ {folder}の間に "/"がないこともわかりました。 –

関連する問題