Shell Scripting Problem...

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Shell Scripting Problem...
# 1  
Old 12-13-2010
Shell Scripting Problem...

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

Hello all,,, I am trying to finish my assignment for my CNET class. I am running into 2 problems... First the "Delete a file" (Option 1) When I run this option everything goes as planned except I am having problems with the confirmation. It comes up, ask for confirmtion, Y or N works great problem is it is persistant to loop the confirmatioin.

Second problem is with Option 8,,, Backing up a directory.
Again everything is going great with one small exception. If the Backup Directory does not exist already the script will make it, but after making the script it will not find the existing directory to backup until AFTER a return to the main menu and selecting the opiton again???

1. The problem statement, all variables and given/known data:
Code:
 
#!/bin/ksh 
while :                                            
do                                       
clear                               
cat<<++                     
MAIN MENU
 1) Delete A File.   
 2) Rename A File. 
 3) Find A File.
 4) Display Contents Of A File in cat.    
 5) Edit A File In vi.
 6) List Contents Of A Directory.
 7) Move A File To A New Directory.
 8) Backup An Entire Directory.  
 X) Exit 
++
echo -n "Hello $LOGNAME, Please enter your selection:"
read selection
case $selection in
1) echo -n "Enter Filename To Delete:"
   read fname
    if [ -r $fname ]
     then
      while :
       do
        echo -n "Are You Certain You Want To Delete $fname? (y or n):"
         read confirm
         case $confirm in
          y|Y|YES|yes|Yes) rm $fname
           echo "File $fname Has Been Deleted, " ;;
          n|N|NO|no|No) echo "Wise Choice, File NOT Deleted, " ;;
          *) echo "Invalid Choice, Please Enter Y or N. "
         esac
       done
     else
      echo "Unable To Locate File $fname:"
    fi
   ;;
2) echo -n "Enter Filename To Rename:"
   read fname
    if [ -r $fname ]
     then
      echo -n "Enter New Filename:"
      read fname2
      mv $fname $fname2 
      echo "File Has Been Renamed, "
     else
      echo "Unable To Locate File $fname: " 
    fi
   ;;
3) echo -n "Enter Filename To Search For:"
   read fname
    locate $fname
   ;;
4) echo -n "Enter a filename:" 
   read fname
    if [ -r $fname ]
     then
      cat $fname
     else
      echo "Unable To Locate File $fname:"
    fi
   ;;
5) echo -n "Enter filename:"
   read fname
   for fn in $fname
   do
    if [ -r $fname ]
     then
      vi $fname
     else
      echo "Unable To Locate File $fname"
    fi
   done
   ;;
6) echo -n "Enter Directory Name: "
    read dname
    if [ -r $dname ]
     then
      ls -R -l $dname
     else
      echo "Unable To Locate Directory $dname, "
    fi
    ;;
7) echo -n "Enter Filename You Wish To Move: "
    read fname
     if [ -r $fname ]
      then
       echo -n "Enter Directory To Move File To: "
        read dname
         if [ -r $dname ]
          then
           mv $fname $dname
           echo "$fname Has Been Moved To $dname, "
          else 
           echo "Unable To Locate Directory $dname, "
         fi
      else 
       echo "Unable To Loate File $fname, "
     fi
    ;;
8) DIR=~/backups
    if [ -r $DIR ]
     then
      echo "Backup Directory Exist! Continuing,,,,, "
      echo -n "Enter Name Of Directory To Backup: "
       read dname
        if [ -r $dname ]
         then 
          cp -r $dname ~/backups
          echo "$dname Backup Has Ben Created in /home/USERNAME/backups, "
         else 
          echo "Unable To Locate Directory $dname, Returning To Main Menu, "
        fi
     else
      echo "Backup Directory Does Not Exist!"
      echo "Creating Dirtectory /home/USERNAME/backups..... "
      mkdir ~/backups
      echo "Backup Directory Created..... "
      echo -n "Enter Name Of Directory To Backup: "
       read dname2
        if [ -r dname2 ]
         then
          cp -r $dname2 ~/backups
          echo "$dname2 Backup Has Been Created in /home/USERNAME/backups, "
         else
          echo "Unable To Locate Directory $dname2, Returning To Main Menu, "
        fi
     fi
    ;;
q|Q|e|E|x|X) exit 0
             ;;
*) echo -n "Invalid choice, " 
   ;;
esac
echo -n "Press Enter To Return To Main Menu:"
read hold 
done

2. Relevant commands, code, scripts, algorithms:



3. The attempts at a solution (include all code and scripts):

I have tried changing everything I could think of. I am now desperate LOL..Smilie



4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):

Lewis And Clark Community College, Godfrey IL, U.S.A.,

Mr. Rick Burgess

CNET200


Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).
# 2  
Old 12-13-2010
You can probably rip out your own confirmation code and use rm -i
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 12-13-2010
(Sorry no time to test the whole script).

Option 1)
Once you have a definitive response from the user you need to get out of the "while :" loop with a "break" command.
Btw. There is a ";;" missing for the *) case.

Code:
y|Y|YES|yes|Yes) rm $fname
           echo "File $fname Has Been Deleted, "
           break
           ;;
n|N|NO|no|No) echo "Wise Choice, File NOT Deleted, "
           break
           ;;
*) echo "Invalid Choice, Please Enter Y or N. "
           ;;

This User Gave Thanks to methyl For This Post:
# 4  
Old 12-13-2010
Quote:
Originally Posted by Corona688
You can probably rip out your own confirmation code and use rm -i
Thank You!! Funny how the smallest thing can fix a really pain in the *** problem... LOL

I spent way too much time trying to figure that out. It doesnt outline the input (Y or N) but it will accept all versions. This will work great...

Thanks again,,

1 down 1 to go.....

---------- Post updated at 06:13 PM ---------- Previous update was at 06:11 PM ----------

Quote:
Originally Posted by methyl
(Sorry no time to test the whole script).

Option 1)
Once you have a definitive response from the user you need to get out of the "while :" loop with a "break" command.
Btw. There is a ";;" missing for the *) case.

Code:
y|Y|YES|yes|Yes) rm $fname
           echo "File $fname Has Been Deleted, "
           break
           ;;
n|N|NO|no|No) echo "Wise Choice, File NOT Deleted, "
           break
           ;;
*) echo "Invalid Choice, Please Enter Y or N. "
           ;;

Sweet!! Thank you very much,,, I knew it had something to do with the while loop,,, Im not familiar enough with it that I forgot the break...Now I can fix my version of the confirmation..

Just tried it out and it works a treat! Thank you so much...

---------- Post updated at 06:25 PM ---------- Previous update was at 06:13 PM ----------

I belive my remaining problem lies in the code below. Like I said if the backups directory already exist then everything runs fine. If it doesnt then it has to create it,, which it does ok,, ,but for some reason it will not find an existing directory when using this section... But when you exit back to the Main Menu then try again,, This time using the existing directory section of code because the backups directory now exist,, it will run fine then.

else
echo "Backup Directory Does Not Exist!"
echo "Creating Dirtectory /home/USERNAME/backups..... "
mkdir ~/backups
echo "Backup Directory Created..... "
echo -n "Enter Name Of Directory To Backup: "
read dname2
if [ -r dname2 ]
then
cp -r $dname2 ~/backups
echo "$dname2 Backup Has Been Created in /home/USERNAME/backups, "
else
echo "Unable To Locate Directory $dname2, Returning To Main Menu, "
fi
fi
;;

Last edited by ozman911; 12-13-2010 at 07:19 PM..
# 5  
Old 12-13-2010
Code:
if [ -d "${dname2}" ]

# 6  
Old 12-13-2010
Thank you vgersh99! That did it... I cant belive I missed these little things..

I guess starting at them for 2 hours wasnt enough LOL...

You guys are the best,,,

Thanks again.Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell scripting problem

Hello. I hava homework for university but i cant do it and i need a little help if someone can help me :) I have to do a linux shell script. Write a script that does the following: 1. Check if there is a directory in / home with myDir name. If not, it creates it. 2. In the directory it... (1 Reply)
Discussion started by: alex4o0o
1 Replies

2. Emergency UNIX and Linux Support

Need support for a shell scripting problem

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. Shell Programming and Scripting

Shell Scripting awk Problem

I'm limited in my skills related to *nix and I'm even more limited in my skills related to shell scripting and the use of awk. I have what should be a relatively simple shell script that looks in the /etc/fstab to see if a particular partition exists on the Linux system. The intention of this part... (2 Replies)
Discussion started by: DisabledVet
2 Replies

4. Shell Programming and Scripting

Shell scripting newbie problem

I am trying to create a shell script similar to ls, but which only lists directories. I have the first half working (no argument version), but trying to make it accept an argument, I am failing. My logic is sound I think, but I'm missing something on the syntax, I'm guessing in the bolded line? ... (9 Replies)
Discussion started by: Tibor63
9 Replies

5. Shell Programming and Scripting

Problem in loops in shell scripting

Hi, #!/bin/ksh $v="" for ((i = 1 ; i <= 5 ; i++ )) do v="THerrFile_$i.err"; grep -i "$i:Error" $v >>oraerror_output.txt done My requirement is to dynamically create variable like THerrFile_1.err,THerrFile_2.err etc. where my grep needs... (5 Replies)
Discussion started by: sudhir_83k
5 Replies

6. Shell Programming and Scripting

Shell Scripting problem

Hi guys, I am a newbie to shell scripting.Please help me to accomplish this task. Its very urgent,I should create a script which will do the following: i) "cd ~joseph/ ; mkdir -p Bing/Bong ;mkdir -p Bing/Bang" and then create 15 ".txt" files with content "Bing Bang Bong" in "Bong"... (1 Reply)
Discussion started by: mahesh_raghu
1 Replies

7. Shell Programming and Scripting

Shell scripting and ls -1 problem

Hey, I'm running knoppix and I'm trying to run a shell script to change multiple lines of text in multiple files #!/bin/sh for i in 'ls-1 test' do sed 's/bob/manny/'g $i > $i.0 mv $i.0 $i done Obviously this isn't the original file, but it's on another non-networked machine. What... (7 Replies)
Discussion started by: afroCluster
7 Replies

8. Shell Programming and Scripting

Problem - gnome terminal shell scripting

I've a python script named rwe.py. I'm running the program in three separate terminals. If one of the executing program stops . I want to leave the terminal as it is so that i can see the error. i wrote a the below script and used cron to run it every one hour to check if the three programs are... (0 Replies)
Discussion started by: msteve2002
0 Replies

9. Shell Programming and Scripting

shell scripting problem

her i am trying to edit a database file which is actually a small file holding my friend's name and birthdays My Database DEEPAK 27/08 DEEPIKA 18/02 DHYAN 23/03 DIPANKAR 24/10 SNIGDHO 19/05 AYANNAR 17/12 BHAI 22/09 DEBAN 16/08 JAGADISH 02/06 SUBHOJIT 23/02 TOJO 17/09 SUDHIR 12/09... (1 Reply)
Discussion started by: mobydick
1 Replies

10. Solaris

Problem in for loop of shell scripting in solaris

Hi below is my script for((i=0;i<=$TOTAL;i++)) do echo "IP's created are $s1.$s2.$s3.$s4" s4=`expr $s4 + 1` done where s1,2,3,4 are input varibles below error occurs while running the script syntax error at lin 11: '(' unexpected ... (12 Replies)
Discussion started by: krevathi1912
12 Replies
Login or Register to Ask a Question