需要做一個功能 從ftp下載一個文件 然後解壓 用shell寫了一個sh如下
#!/bin/bash
echo 111111111111111111111111111111
ftp -n<<!
open 192.168.1.126
user anonymous null
binary
prompt
get
close
bye
echo 222222222222222222222222222222
unzip -o -O UTF8 -d
echo 333333333333333333333333333333
mysql -uhqzn -p111111 -e"use chedi-dev; UPDATE hq_task_queue SET status='done' Where ID = ; UPDATE hq_log_TrainSend_Files SET ftped = 'done' Where ID= ;"
!
運行結果卻隻打出了111111111111111111111111
也就是說2和3都沒有執行
請教如何才能讓ftp執行完之後
繼續執行後麵的命令
你的heredoc符號選擇為了嘆號,而配對的第二個嘆號一直到了腳本文末。
換句話說,上述腳本bye之後的所有語句都被重定向給了ftp, 而不是被shell執行
解決方法:把!挪到bye之後一行。