linux - 脚本正在尝试移动目录而不是文件 - 需要帮助

标签 linux bash

该脚本似乎是正确的。然而,在对目录中的所有文件进行 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 - user@ftp  << 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

最佳答案

$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"

关于linux - 脚本正在尝试移动目录而不是文件 - 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788968/

相关文章:

android - Linux API,即使使用正确的文件描述符和权限,Write() 也会失败

linux - 使 linux 二进制可移植(ELF Statifier)

node.js - 无法在 Windows 上提供 Angular 项目

bash - 提示用户确认

regex - Bash:如何为同一字符串的多个实例 grep 一行?

ruby - puppet 4.10.4 : Master not reading manifest

Linux 脚本意外的文件结束错误

python - 启动和停止服务器脚本

bash - 如何在bash中获取字符串的第一部分

linux - 替代创建多部分 .tar.gz 文件?