永发信息网

shell脚本中ftp问题

答案:2  悬赏:20  手机版
解决时间 2021-02-03 17:29
  • 提问者网友:饥饿走向夜
  • 2021-02-03 03:12
写了一个shell脚本,其中需要登录另一个ftp获取一堆文件到shell所在的服务器。代码如下:
#1、这是从数据库查出来需要获取的文件名(无后缀)
sql1="SELECt DBF_TNAME FROM PEFDM.LOG_DBF_LIST PTH WHERe DBF_TNAME in ('ZCTG_HSXT_CPXX', 'ZCTG_QSXT_CPDY_HKXX')"
db2_tname=`db2 connect to pe_dvp user $user using $password > /dev/null
db2 -X "$sql1"
db2 terminate > /dev/null`
echo $?
#2、打印出来后db2_tname是多个文件名(无后缀)

#3、登录ftp循环获取ftp下和db2_tname相对应的文件
ftp -i -n FTPIP <user xx xxxxxxx
bin
for tname in $db2_name #4、这里根本就拿不到上面查出来的文件
do
get "$tname.txt" #5、从而get不到相应文件,这里答应出来是“.txt” ,根本没有文件名
done
bye
!
大神救救我
最佳答案
  • 五星知识达人网友:几近狂妄
  • 2021-02-03 04:40
ftp 登录后,我感觉是不支持shell语法的(目前还不确定),建议使用mget 下载多个文件!
全部回答
  • 1楼网友:想偏头吻你
  • 2021-02-03 04:47
对,$?仅表示上一个命令ftp成功与否。 无法判断远程文件是否存在,只能通过判断本地文件大小来得知。 若远程文件不存在,则ftp获取到本地会产生一个0字节大小的文件(用 wc -c 获取文件字节数,并与0比较即可),也可能就没有产生文件(用test表达式 [ -e $save_name ] 来判断)。 无法判断具体是什么问题,只能得知一个结果:ftp获取文件失败。 -------------------------------------------------------------------------------------------- 根据你自己的情况来判断。那就用 [ -e $save_name ] 判断本地文件是否存在。 -------------------------------------------------------------------------------------------- -e 判断文件是否存在(exist),-f 判断这个“文件”是否为文件(file)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯