作者 主題: FTP script最後寫一個<<EOC 或者 <<EOF 他們兩個有區別嗎?  (閱讀 8042 次)

0 會員 與 1 訪客 正在閱讀本文。

wanken

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
如下範例↓  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

pippeng

  • 活潑的大學生
  • ***
  • 文章數: 329
  • 性別: 男
    • 檢視個人資料
    • IT Ranger
End Of File他表示檔案結尾,結束執行
這是程式語言裡面常見的檔案結尾表示

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

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

用心用心再用心

wanken

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
非常感謝大大的解達!獻上十二萬份致意!

pippeng

  • 活潑的大學生
  • ***
  • 文章數: 329
  • 性別: 男
    • 檢視個人資料
    • IT Ranger
我現在對這我現在對這 <<EOF
有一個先有雞還是先有蛋的問題?

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

目前我看的結果看起來是先有<<EOF才會去讀下面的檔案內容
用心用心再用心

DarkAngel

  • 可愛的小學生
  • *
  • 文章數: 7
    • 檢視個人資料
這應該是所謂的 Here String 加上 pipe 的精簡寫法, PHP 也有 Here String, 或者應該是說 PHP 學 bash 的. (單引雙引號也是...)
滿招損 謙受益