0

给定以下脚本

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /home/dbadmin/backup
mput *.gz
quit
END_SCRIPT

mput *.gz来自/backups包含 *.gz 文件的目录会导致此错误:

mput t1.gz? mput t2.gz? ./temp.sh: line 14: /home/dbadmin: is a directory

我不确定如何在不输入put单个文件名的情况下更改脚本。我想要mput这个目录中的所有文件。

通过在 END_SCRIPT 之后放置一个退出 0,错误消失了,我对为什么会发生这种情况很感兴趣。

4

1 回答 1

0

将 mput 替换为 generatedput怎么样?

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /home/dbadmin/backup
$(find *.gz -maxdepth 0 -type f -printf 'put %p\n')
quit
END_SCRIPT

这个怎么运作:

当 HERE-IS-DOCUMENT 将被解析时,find *.gz ...将为 mask 找到的每个文件生成多行*.gz

put 1.gz
put 2.gz
...

并且您将执行的脚本内容ftp将是这样的:

quote USER your_user_name
quote PASS your_passwd
cd /home/dbadmin/backup
put 1.gz
put 2.gz
...
quit

关于/home/dbadmin: Is a directory我相信你的脚本中有单行/home/dbadmin(或类似的东西$SOME_COMMAND /home/dbadmin)。

于 2013-06-24T17:52:03.107 回答