给出以下脚本
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /home/dbadmin/backup
mput *.gz
quit
END_SCRIPT
包含* .gz文件的目录mput *.gz
中的/backups
会导致此错误:
mput t1.gz? mput t2.gz? ./temp.sh: line 14: /home/dbadmin: is a directory
我不确定如何在没有put
单个文件名的情况下更改脚本。我想mput
此目录中的所有文件。
在END_SCRIPT之后输出0,错误消失了,我感兴趣的是为什么会这样。
答案 0 :(得分:0)
如何将mput替换为生成的put
?
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 ...
将为掩码*.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
)。