shell命令没执行完

需要做一个功能 从ftp下载一个文件 然后解压 用shell写了一个sh如下

#!/bin/bash
echo 111111111111111111111111111111
ftp -n<<!
open 192.168.1.126
user anonymous null
binary
prompt
get $2 $1 
close
bye

echo 222222222222222222222222222222
unzip -o -O UTF8 -d $5 $1 
echo 333333333333333333333333333333

mysql -uhqzn -p111111 -e"use chedi-dev; UPDATE  hq_task_queue SET status='done' Where ID = $3; UPDATE hq_log_TrainSend_Files SET ftped = 'done' Where ID= $4;"
!

运行结果却只打出了111111111111111111111111
也就是说2和3都没有执行
请教如何才能让ftp执行完之后
继续执行后面的命令

阅读 3.2k
1 个回答

你的heredoc符号选择为了叹号,而配对的第二个叹号一直到了脚本文末。

换句话说,上述脚本bye之后的所有语句都被重定向给了ftp, 而不是被shell执行

解决方法:把!挪到bye之后一行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题