2014-11-06 1 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

As @MarcB упомянутый. Чтобы исправить это, поместите свои параметры перемещения в кавычки: 'mv '$ 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"