当前位置: 技术问答>linux和unix
Shell中ftp不能用mput
来源: 互联网 发布时间:2016-04-12
本文导语: 写了一个shell调用ftp功能,从命令参数中传入function(put,get,mput,mget),文件夹,文件名: function=$1 location=$2 filename=$3 ... ... ftp -n $hostname>>! user name passwd cd '$location' prompt off $function $filename close by ! 比如shell的名字叫ftps,输...
写了一个shell调用ftp功能,从命令参数中传入function(put,get,mput,mget),文件夹,文件名:
function=$1
location=$2
filename=$3
...
...
ftp -n $hostname>>!
user name passwd
cd '$location'
prompt off
$function $filename
close
by
!
比如shell的名字叫ftps,输入
ftps mget location R*
能把R开头的文件都get下来,
但是输入
ftps mput location R*
却只能上传一个文件,怎么回事呢?
mget *能实现把所有文件都get下来
function=$1
location=$2
filename=$3
...
...
ftp -n $hostname>>!
user name passwd
cd '$location'
prompt off
$function $filename
close
by
!
比如shell的名字叫ftps,输入
ftps mget location R*
能把R开头的文件都get下来,
但是输入
ftps mput location R*
却只能上传一个文件,怎么回事呢?
mget *能实现把所有文件都get下来
|
跟LZ一起学习一下。
我觉得应该先定位,是shell的问题还是ftp的问题。
比如,不用这个shell,直接手工运行ftp,然后mput,看看行不行。
如果是shell的问题,有可能问题是出在*这里。
建议LZ用echo $filename看看这个R*能不能传给filename这个变量。
我记得shell要先把R*展开成好几个文件名,然后才赋值给变量的。
比如,如果目录里有R1、R2、R3,然后运行ftps R*
那么可能是这个结果:function=R1,location=R2,filename=R3
不过如LZ所说,mget能用,又不太像这个原因了。
我觉得应该先定位,是shell的问题还是ftp的问题。
比如,不用这个shell,直接手工运行ftp,然后mput,看看行不行。
如果是shell的问题,有可能问题是出在*这里。
建议LZ用echo $filename看看这个R*能不能传给filename这个变量。
我记得shell要先把R*展开成好几个文件名,然后才赋值给变量的。
比如,如果目录里有R1、R2、R3,然后运行ftps R*
那么可能是这个结果:function=R1,location=R2,filename=R3
不过如LZ所说,mget能用,又不太像这个原因了。
|
LZ也可以试试加个引号
ftps mput location 'R*'
ftps mput location 'R*'
|
又想起一个问题:
在替换*的时候,mput应该是用本地目录里的文件,mget应该是用服务器端目录里的文件。
我试了psftp,是这样替换的。
在替换*的时候,mput应该是用本地目录里的文件,mget应该是用服务器端目录里的文件。
我试了psftp,是这样替换的。