酷!學園

技術討論區 => Linux 討論版 => 主題作者是: nomoty 於 2012-03-29 10:37

主題: shell ftp 之後再執行動作
作者: nomoty2012-03-29 10:37
下面shell是連到ftp 之後要輸出時間至end.txt,但ftp close後就結束這個shell,
不會再執行下面輸出的動作,不知有沒有什麼指令可以再繼續動作

#! /bin/sh
......
......
startTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $startTime >> /home/admin/start.txt

ftp -n "$host" <<EOC
user $id $pw
binary
cd $remodir
bye

endTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $endTime > /home/admin/end.txt
主題: Re: shell ftp 之後再執行動作
作者: noki2012-03-30 16:14
你這shell script中的  << EOC
只是跟系統講讀檔案時遇到EOC時就要停止
因為你的ftp是去讀下面一行行的指令並執行
所以必須跟他講讀到那一行要結束(Ctrl + D)

但是你沒有EOC做結束
所以script應該一直停留在ftp的狀態下
而ftp沒有辦法執行bye下的那兩行
故沒有出現預期中的end.txt

小弟拙見,有誤請大大糾正。
主題: Re: shell ftp 之後再執行動作
作者: nomoty2012-03-30 17:17
不知道該怎麼改才行呢,網路上找到有關ftp 的shell script大多結束後
就沒後續動作了
主題: Re: shell ftp 之後再執行動作
作者: vincent1192012-04-02 14:28
2樓說得很明白了

startTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $startTime >> /home/admin/start.txt

ftp -n "$host" <<EOC
user $id $pw
binary
cd $remodir
bye
EOC
endTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $endTime > /home/admin/end.txt
主題: Re: shell ftp 之後再執行動作
作者: nomoty2012-04-03 16:28
感謝回答,在ftp bye 下加EOC就可以了....