2014-11-06 2 views
-1

스크립트가 올바른 것 같습니다. 그러나, 디렉토리에있는 모든 파일을 FTP'ing 후, 그것은 나 자신에게 디렉토리로 디렉토리를 이동하려고하는 오류를 제공합니다.스크립트가 파일 대신 디렉토리를 이동하려고합니다. 도움이 필요합니다.

왜 이런 현상이 발생하는지 알고 싶습니다.

mysql -u ????? -p????? -h ????? db < $SCRIPT_FOLDER/script.sql > script.xls 

echo "###############################################################################" 
echo "FTP the files" 

#for FILE in `ls $SOURCE_FOLDER/` 
for FILE in $SOURCE_FOLDER/*.xls 


do 
     echo "# Uploading $SOURCE_FOLDER/$FILE" >> /tmp/CasesReport.copy.out 
    sshpass -p ???? sftp -oBatchMode=no -b - [email protected] << END 
     cd /source/directory/ 
     put $SOURCE_FOLDER/$FILE 
bye 
END 

echo "Moving $FILE to $SOURCE_FOLDER/history/" 
mv $SOURCE_FOLDER/$FILE $SOURCE_FOLDER/history/$FILE 
+3

이 파일에 공백/디렉토리 이름을 가지고 사용할 수 있습니까? –

+0

@MarcB 언급대로. 이 문제를 해결하려면'$ SOURCE_FOLDER/$ FILE ""$ SOURCE_FOLDER/history/$ FILE "' –

+0

파일 이름에 공백을 넣지 말고 이동 매개 변수를 따옴표로 묶으십시오. – user3299633

답변

1

$FILE 이미 $SOURCE_FOLDER을 포함, 그래서 당신은 put 명령은 경로를 두 배로됩니다.

예 내부의

$ cd /tmp 
$ touch foo.txt bar.txt 
$ cd 
$ SOURCE_FOLDER=/tmp 
$ for FILE in $SOURCE_FOLDER/*.txt; do echo "put $SOURCE_FOLDER/$FILE"; done 
put /tmp//tmp/bar.txt 
put /tmp//tmp/foo.txt 

루프, 단지 "$FILE"

관련 문제