2011-11-23 47 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