作者 主題: 請問一個shell的問題  (閱讀 6916 次)

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

dreamyala

  • 懷疑的國中生
  • **
  • 文章數: 62
    • 檢視個人資料
    • http://www.yoshow.net
請問一個shell的問題
« 於: 2005-01-31 23:20 »
我在一本書看過一個備份/home裡面使用者個人網頁的shell
可是我照打之後卻出現錯誤訊息,難道是書錯嗎,如果錯的話那怎麼修改阿

代碼: [選擇]

#!/bin/bash
for i in 'ls /home'
do
        test -d /home/$i/public_html || continue
        cd /home/$i
        tar zcf /tmp/${i}_web_'date +%Y%m%d'.tgz ./public_html
done


錯誤訊息

'/backup-html.sh: line 6: syntax error near unexpected token `do
'/backup-html.sh: line 6: `do

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
請問一個shell的問題
« 回覆 #1 於: 2005-01-31 23:31 »
'ls /home'

`ls /home` 或:
$(ls /home)

我來寫的話:
代碼: [選擇]

#!/bin/bash
for i in /home/*/public_html
do
        test -d $i || continue
        home=${i%/*}
        date=$(date +%Y%m%d)
        cd $home
        tar zcf /tmp/${home##*/}_web_$date.tgz ./public_html
done

dreamyala

  • 懷疑的國中生
  • **
  • 文章數: 62
    • 檢視個人資料
    • http://www.yoshow.net
請問一個shell的問題
« 回覆 #2 於: 2005-02-01 00:29 »
引述: "netman"
'ls /home'

`ls /home` 或:
$(ls /home)

我來寫的話:
代碼: [選擇]

#!/bin/bash
for i in /home/*/public_html
do
        test -d $i || continue
        home=${$i%/*}
        date=$(date +%Y%m%d)
        cd $home
        tar zcf /tmp/${home##/*}_web_$date.tgz ./public_html
done


改過
`ls /home` 或:
$(ls /home)
也都不行

至於執行大大寫的出現
-bash: ./backhtml.sh: bin/bash: bad interpreter: No such file or directory

想請問如果不是每個/home底下都有存在public_html這個目錄的話會出現這樣的錯誤訊息嗎?

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
請問一個shell的問題
« 回覆 #3 於: 2005-02-01 00:41 »
引述: "dreamyala"

至於執行大大寫的出現
-bash: ./backhtml.sh: bin/bash: bad interpreter: No such file or directory


!_____________!

#!/bin/bash 打成 #!bin/bash 的問題不是呼?

--
I am kenduest - 小州

my website: http://kenduest.sayya.org/

dreamyala

  • 懷疑的國中生
  • **
  • 文章數: 62
    • 檢視個人資料
    • http://www.yoshow.net
請問一個shell的問題
« 回覆 #4 於: 2005-02-01 00:51 »
引述: "kenduest"
引述: "dreamyala"

至於執行大大寫的出現
-bash: ./backhtml.sh: bin/bash: bad interpreter: No such file or directory


!_____________!

#!/bin/bash 打成 #!bin/bash 的問題不是呼?

--


哈!真是不好意思呢
少打一個/
但是改完之後的訊息是
./backhtml.sh: line 5: ${$i%/*}: bad substitution

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
請問一個shell的問題
« 回覆 #5 於: 2005-02-01 00:52 »
哦, bug found:

${$i   改為:
${i

dreamyala

  • 懷疑的國中生
  • **
  • 文章數: 62
    • 檢視個人資料
    • http://www.yoshow.net
請問一個shell的問題
« 回覆 #6 於: 2005-02-01 10:50 »
引述: "netman"
哦, bug found:

${$i   改為:
${i



可以執行了語法也沒錯誤
可是執行完產生的檔名跟原本預計的不一樣
檔名只有 _web_20050201.tgz
不是預計aaa _web_20050201.tgz
是不是${home##/*}_web_$date.tgz這裡的寫法有bug

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
請問一個shell的問題
« 回覆 #7 於: 2005-02-01 10:56 »
sorry, bug again:

${home##/*} 改為:
${home##*/}

dreamyala

  • 懷疑的國中生
  • **
  • 文章數: 62
    • 檢視個人資料
    • http://www.yoshow.net
請問一個shell的問題
« 回覆 #8 於: 2005-02-01 11:09 »
引述: "netman"
sorry, bug again:

${home##/*} 改為:
${home##*/}



可以正常使用了
謝謝學長幫忙