Rosco
Rosco

Reputation: 47

Linux Shell Script

Hi Community of Stackoverflow,

I am facing a problem here with my shell script that I am designing...

#!/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 error displays 'cript: line 21: syntax error near unexpected token 'in 'cript: line 21: 'case $yourch

Does anyone know how to by pass this error? Basically what im trying to do is be able to back up a set of files with the file name ".doc" and place them in a backup folder. I can then restore the files from this folder to another folder.

Upvotes: 1

Views: 6683

Answers (1)

T.Rob
T.Rob

Reputation: 31832

This runs for me on RHEL 4 ES using /bin/sh as the interpreter. However, the case statement will execute only the first match. So where you have two lines to execute for each of options 1, 2 and 3, only the first one is ever executed. So instead of...

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

...you may want something more like this:

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

Depending on your interpreter, you may also have a problem that your *) case does not end in ;;.

However, the first of these suggestions is debugging a different problem and the second is a long shot. If you edited this in Windows and copied over in a paste buffer, you may also have an incorrect line-end in Line 21 (and possibly more below). The fix for that is to run the dos2unix command against the script - i.e. dos2unix /path/to/script.sh.

Upvotes: 2

Related Questions