2011-11-24 176 views
1

嗨#1的社區,的Linux Shell腳本

我在這裏面臨的一個問題與我設計我的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"; 

esac 
done 

A錯誤顯示「CRIPT:行21:語法錯誤'在'cript:第21行:'case $ yourch

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

+0

嘗試使用'sh -vx yourscript.sh'運行腳本 –

+0

rdiff_backup(http://www.nongnu.org/rdiff-backup/)甚至是vanilla rsync有什麼問題? – Sardathrion

+0

我這樣做,它運行腳本,直到 – Rosco

回答

2

這適用於RHEL 4 ES,使用/ bin/sh作爲解釋器。但是,case語句將只執行第一個匹配。因此,對於選項1,2和3中的每一個,您都有兩條線執行,只有第一條線被執行。因此,而不是...

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 ;; 

...你可能要更多的東西是這樣的:

1) echo 
    tar -cvf /Files/*.doc /WP/ 
    echo Today is `date +%Y%m%d-%H:%M 2>&1` 
    read -p "Press <enter> to continue..." ;; 

根據你的解釋,你也可以有你的*)案件並沒有結束中存在的問題;;

但是,這些建議中的第一個是調試另一個問題,第二個是長鏡頭。如果您在Windows中編輯了該文件並將其複製到了一個粘貼緩衝區中,那麼您可能會在第21行(可能更多)中包含不正確的行結束符。解決方法是對腳本運行dos2unix命令 - 即dos2unix /path/to/script.sh