Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用命令通过FTP覆盖文件?_Bash_Shell_Ftp_Ftp Client - Fatal编程技术网

Bash 如何使用命令通过FTP覆盖文件?

Bash 如何使用命令通过FTP覆盖文件?,bash,shell,ftp,ftp-client,Bash,Shell,Ftp,Ftp Client,我编写了这样一个shell脚本,通过ftp将文件上传到部署服务器。如果您想要完全部署,即一次性完成整个项目,则此脚本可以完美工作。但问题是,当我更改本地计算机上的特定文件时,现在我希望它使用ftp覆盖服务器上现有的相同文件,但它不会覆盖 MKDIR=`for directory in $FOLDERS; do echo "mkd \"${directory}\""; done` DELETE=`for file in $DFILES; do echo "delete \"${file}\"";

我编写了这样一个shell脚本,通过ftp将文件上传到部署服务器。如果您想要完全部署,即一次性完成整个项目,则此脚本可以完美工作。但问题是,当我更改本地计算机上的特定文件时,现在我希望它使用ftp覆盖服务器上现有的相同文件,但它不会覆盖

MKDIR=`for directory in $FOLDERS; do echo "mkd \"${directory}\""; done`
DELETE=`for file in $DFILES; do echo "delete \"${file}\""; done`
ATTACH=`for file in $FILES; do echo "put \"${file}\""; done`


IFS=$ORIGIFS
# Send updates to server
    ftp -nv <<EOF
    open $FTPHOST
    user $FTPUSER $FTPPASS
    binary
    cd $FTPDIR
    $MKDIR
    $ATTACH
    quit
 EOF
我找到了答案

我的脚本中的问题陈述:

ATTACH=`for file in $FILES; do echo "put \"${file}\""; done`
在这里我创建了要上传的文件列表。但是这段代码按照@Jdamian的指示连接了每个文件名。 @谢谢你指出我的错误

解决方案:

ATTACH=`for file in $FILES
do
    echo "put $file"
done`

要复制/删除/创建的文件名看起来像是两个合并的文件名。如何分隔这些文件?此文件名以单行字符串形式存储在files变量中。请在填充files变量的脚本行中过帐。
ATTACH=`for file in $FILES
do
    echo "put $file"
done`