2011-11-23 46 views
1

嗨社區,Linux的shell腳本 - 備份/恢復的#1

我在這裏面臨的一個問題,我的shell腳本,我設計...

#!/bin/sh 
while : 
do 
clear 
echo "----------------------------- 
-----------" 
echo "***************Main Menu****************" 
echo "----------------------------------------" 
echo "1. Backup Word Document" 
echo "2. Backup Spreadsheet" 
echo "3. Backup Picture" 
echo "4. Restore Word Documents" 
echo "5. Restore Spreadsheet" 
echo "6. Restore Picture" 
echo "7. EXIT" 

echo "----------------------------------------" 
pause 
echo -n "Enter your menu choice [1-7]:" 
read yourch 
case $yourch in 
1) echo ; tar -cvf /Files/*.doc /WP/ ; read ;; 

1) echo "Today is"; date +%Y%m%d-%H:%M 2>&1 ; echo "Press a key..." ; read ;; 

2) echo ; tar -cvf /Files/*.xls /EXCEL/ ; read ;; 

2) echo "Today is"; date +%Y%m%d-%H:%M 2>&1 ; echo "Press a key..." ; read ;; 

3) echo ; tar -cvf /Files/*.jpg /PICS/ ; read ;; 

3) echo "Today is"; date +%Y%m%d-%H:%M 2>&1 ; echo "Press a key..." ; read ;; 

4) echo ; tar xvzf /WP/*.doc ; read ;; 
5) echo ; tar xvzf /EXCEL/*.xls ; read ;; 
6) echo ; tar xvzf /PICS/*.jpg ; read ;; 
7) exit 0 ;; 

*) echo "Please press a number between 1 to 7"; 

A錯誤顯示「CRIPT:第21行:在意外標記附近的語法錯誤' 'cript:第21行:'case $ yourch

有沒有人知道如何通過這個錯誤?基本上,我試圖做的是能夠備份一組文件,文件名爲「.doc」,並將它們放在備份文件夾中。然後我可以將文件從這個文件夾恢復到另一個文件夾。

親切的問候,

+0

@KiranChandrashekhar我已經加入ESAC到腳本的底部,但它不會晃過線21 – user1028145

+0

這個代碼是錯誤的,你不能使用多個case語句 – Kiran

+0

@KiranChandrashekhar是的,我有隻是發現語句中有語法錯誤,但我不知道確切位置。你能指出我正確的方向嗎? – user1028145

回答

1

我認爲你缺少esacdone聲明。

好的。使用這一個:

#!/bin/sh 
while : 
do 
    clear 
    echo "----------------------------- 
    -----------" 
    echo "***************Main Menu****************" 
    echo "----------------------------------------" 
    echo "1. Backup Word Document" 
    echo "2. Backup Spreadsheet" 
    echo "3. Backup Picture" 
    echo "4. Restore Word Documents" 
    echo "5. Restore Spreadsheet" 
    echo "6. Restore Picture" 
    echo "7. EXIT" 

    echo "----------------------------------------" 

    echo -n "Enter your menu choice [1-7]:" 
    read yourch 
    case $yourch in 
     1) echo ; 
    tar -cvf /Files/*.doc /WP/ ; read ; 
    echo "Today is"; date +%Y%m%d-%H:%M 2>&1 ; echo "Press a key..." ; read ;; 

     2) echo ; tar -cvf /Files/*.xls /EXCEL/ ; read ; 
     echo "Today is"; date +%Y%m%d-%H:%M 2>&1 ; echo "Press a key..." ; read ;; 

     3) echo ; tar -cvf /Files/*.jpg /PICS/ ; read ; 
    echo "Today is"; date +%Y%m%d-%H:%M 2>&1 ; echo "Press a key..." ; read ;; 

     4) echo ; tar xvzf /WP/*.doc ; read ;; 
     5) echo ; tar xvzf /EXCEL/*.xls ; read ;; 
     6) echo ; tar xvzf /PICS/*.jpg ; read ;; 
     7) exit 0 ;; 

    *) echo "Please press a number between 1 to 7";; 

    esac 
done 
+0

這些放置在哪裏,我嘗試添加esac,它是否需要與完成組合? – user1028145

+0

'esac'結束case語句,'done'結束do-while循環。正如我所看到的,你需要把它放在代碼的末尾('esac'第一):) – Kiran

+0

我已經把*)回聲下的esac「請按1到7之間的數字」);我還在它下面添加了「完成」。但它仍然顯示相同的錯誤 – user1028145