2014-11-06 34 views
-1

腳本看起來是正確的。但是,在FTP目錄中的所有文件之後,它給了我一個錯誤,它試圖將目錄移動到它自己的目錄中。腳本正試圖移動一個目錄而不是文件 - 需要幫助

關於爲什麼會發生這種情況的任何想法?

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

有你的文件/目錄的空間名字? – 2014-11-06 20:42:29

+0

正如@MarcB所提到的。要更正此問題,請將移動參數放在引號中:'mv「$ SOURCE_FOLDER/$ FILE」「$ SOURCE_FOLDER/history/$ FILE」' – 2014-11-06 20:44:55

+0

文件名中沒有空格 – user3299633 2014-11-06 20:49:02

回答

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 

在for循環中,只使用"$FILE"