给出以下脚本
ftp -n $HOST <<END_SCRIPT quote USER $USER quote PASS $PASSWD cd /home/dbadmin/backup mput *.gz quit END_SCRIPT来自包含* .gz文件的目录/backups的mput *.gz导致此错误:
mput t1.gz? mput t2.gz? ./temp.sh: line 14: /home/dbadmin: is a directory
我不知道如何在不put单个文件名的情况下更改脚本。 我想要mput这个目录中的所有文件。
通过在END_SCRIPT之后输出0,错误消失了,我对发生这种情况的原因感兴趣。
Given the following script
ftp -n $HOST <<END_SCRIPT quote USER $USER quote PASS $PASSWD cd /home/dbadmin/backup mput *.gz quit END_SCRIPTthe mput *.gz from a directory /backups that contains *.gz files, results in this error:
mput t1.gz? mput t2.gz? ./temp.sh: line 14: /home/dbadmin: is a directory
I am not sure how to change the script without putting individual file names. I want to mput all files in this directory.
By putting an exit 0 after END_SCRIPT, the error disappeared, and I am interested in why this happened.
最满意答案
如何将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 ...将为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: Is a directory ,你的脚本中有单行/home/dbadmin (或类似$SOME_COMMAND /home/dbadmin )。
What about to replace mput to generated 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_SCRIPTHow it works:
When HERE-IS-DOCUMENT will be resolved, find *.gz ... will generate multiple lines for each file found by mask *.gz:
put 1.gz put 2.gz ...and your script content that will be executed by ftp will be like that:
quote USER your_user_name quote PASS your_passwd cd /home/dbadmin/backup put 1.gz put 2.gz ... quitRegarding /home/dbadmin: Is a directory I belive you have single line /home/dbadmin in your script (or something like $SOME_COMMAND /home/dbadmin).
更多推荐
发布评论