酷!學園

技術討論區 => Linux 討論版 => 主題作者是: wanken 於 2008-07-07 10:45

主題: FTP script最後寫一個<<EOC 或者 <<EOF 他們兩個有區別嗎?
作者: wanken2008-07-07 10:45
如下範例↓  EOC  與 EOF 有何區別又有何功用!勞駕各位大大告知!謝謝

如果你想要有自己的簡單的自動 FTP scripts 來幫我們達成自動檔案上傳的功能

#!/bin/bash
#
# WHAT IS THIS:
# This program will automatically put the backup file
# from this host to another hosts
#
# HISTORY
# When          Who     What
# 2002/10/14    VBird   First time to release
#
###################################################################
# 1. input your FTP's ID and PassWord
  host="192.168.1.100"
  id="testing"
  pw='your.passwd'

# 2. what is the correct and remote working directory
  basedir="/disk2/backup"              # 本機上面的欲上傳檔案路徑
  remodir="/disk2/backup_testinghost"  # 遠端主機欲備份的目錄

# 3. the tar file
  filename="backup.testinghost.tar"

# 4. starting tar work
# 因為我將所有預備被傳送的資料都分門別類的放置在
# /disk2/backup 這個目錄中, 但是FTP傳送檔案的時候,
# 畢竟一個檔案送完會比較容易與快速,所以我先將好幾個檔案 tar 成一個!
  cd $basedir
  tar -cvf $filename *

###################################################################
# 5. 底下就是 ftp 自動連線並操作上傳手續的 script !
  ftp -n "$host" > "$basedir"/"$filename".log 2>&1 <<EOC
  user    $id         $pw
  binary
  cd      $remodir
  put     $filename
  bye
  EOC
主題: 回覆: FTP script最後寫一個<<EOC 或者 <<EOF 他們兩個有區別嗎?
作者: pippeng2008-07-07 13:24
End Of File他表示檔案結尾,結束執行
這是程式語言裡面常見的檔案結尾表示

在Linux的Shell Script中大家只是把寫程式的習慣帶過來使用而已
並沒有強制一定要用EOF
你這shell script中的  << EOC
只是跟系統講讀檔案時遇到EOC時就要停止
因為你的ftp是去讀下面一行行的指令並執行
所以必須跟他講讀到那一行要結束(Ctrl + D)

你也可以把他改成 << EOF 或 << EXIT
或 << SONG 或 << KEEP

主題: 回覆: FTP script最後寫一個<<EOC 或者 <<EOF 他們兩個有區別嗎?
作者: wanken2008-07-07 13:37
非常感謝大大的解達!獻上十二萬份致意!
主題: 回覆: FTP script最後寫一個<<EOC 或者 <<EOF 他們兩個有區別嗎?
作者: pippeng2008-07-07 15:51
我現在對這我現在對這 <<EOF
有一個先有雞還是先有蛋的問題?

到底是先有必須去讀檔案的指令才需要<<EOF
還是先有<<EOF才會去讀下面的檔案內容

目前我看的結果看起來是先有<<EOF才會去讀下面的檔案內容
主題: 回覆: FTP script最後寫一個<<EOC 或者 <<EOF 他們兩個有區別嗎?
作者: DarkAngel2008-07-07 17:37
這應該是所謂的 Here String 加上 pipe 的精簡寫法, PHP 也有 Here String, 或者應該是說 PHP 學 bash 的. (單引雙引號也是...)