How to read user keyboard input inside the case?


 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions How to read user keyboard input inside the case?
# 1  
Old 11-07-2012
How to read user keyboard input inside the case?

I need to Write a shell script that allows some system-administration tasks to be preformed automatically from a menu-driven interface. with automated following tasks:

Copy directory tree
Delete files or directories
Output Information (this part is done )

*Copy directory tree
The “Copy directory tree” selection should prompt for two arguments: src & dest.
The script then copies all the files from src, including all the subdirectories, to dest,
creating all the necessary sub-directories.
The script must perform necessary argument validation, assuming that the first argument may be either a directory name or the name of a regular file, while the second may be only a directory name.

my problem with this assignment is I can not read user input inside the "case" options.
I think I need to ask user to enter src and dest for copying the files.

this is my code so far

Code:
#!/bin/sh
clear
	echo "\t `date "+%d/%m/%Y"`"
	echo "\t Hostname Machine: `hostname`"
	echo "\t user: `whoami` "
	echo "\t M A I N - M E N U"
	echo "\t 1.Copey Directory Tree"
	echo "\t 2.Delete Files or Directories"
	echo "\t 3.Output Information"
while true ; do
	echo -n "\t Please enter an option [ 1 - 4 ] : "
	read opt

	case "$opt" in
		1) echo "Enter the source and destination for copying files" ;; 
		
		#read src dest ;;
		#echo "$src" ;;
		#echo "$dest" ;;

		2)  ;;

		3) echo "\t the number of possible users on the system: `cat /etc/passwd |wc -l` \n\t the number of current user on the system : `who | wc -l`\n\t the number of processes running: `ps -e | wc -l`"  ;;


		*) exit ;; 
	esac
done


Langara College , Vancouver , Canada , Hengameh Hamavand , CPSC 1280
# 2  
Old 11-07-2012
I tried with following modification and able to read user input and print them:-

Code:
#!/bin/sh
clear
echo "\t `date "+%d/%m/%Y"`"
echo "\t Hostname Machine: `hostname`"
echo "\t user: `whoami` "
echo "\t M A I N - M E N U"
echo "\t 1.Copey Directory Tree"
echo "\t 2.Delete Files or Directories"
echo "\t 3.Output Information"

while true ; do
        echo -n "\t Please enter an option [ 1 - 4 ] : "
        read opt

        case "$opt" in
                1) echo "Enter the source and destination for copying files"
                   read src
                   read dest
                   echo "$src"
                   echo "$dest"
                   ;;
                2)  ;;
                3) echo "\t the number of possible users on the system: `cat /etc/passwd |wc -l` \n\t the number of current user on the system : `who | wc -l`\n\t the number of processes running: `ps -e | wc -l`"  ;;
                *) exit ;;
        esac
done

This User Gave Thanks to Yoda For This Post:
# 3  
Old 11-08-2012
how should I apply this part to the script?

The “Delete files or directories” selection should prompt for a list of files or directories to be deleted. The script asks user for confirmation before deleting a file or a whole directory. The script must perform reasonable argument validation.

I tried to read the list of files and directories in a string but it is pretty hard to split the string based on space and put them in an array and then check them one by one and delete them. Also I was thinking to run a while loop to ask user to enter the name of file and then delete it and again repeat the job but it is not a nice way.
would you give me some clue?

Code:
#!/bin/sh
clear
	echo "\t `date "+%d/%m/%Y"`"
	echo "\t Hostname Machine: `hostname`"
	echo "\t user: `whoami` "
	echo "\t M A I N - M E N U"
	echo "\t 1.Copey Directory Tree"
	echo "\t 2.Delete Files or Directories"
	echo "\t 3.Output Information"
while true ; do
	echo -n "\t Please enter an option [ 1 - 4 ] : "
	read opt

	case "$opt" in
		1) echo "Enter the source of the files and destination for copying "
                   read src dest
                if [ -n "$src" -a -n "$dest" ]
		then
			if [ -d "$src" -o -f "$src" -a -d "$dest" ]
			then
			cp -r "$src" "$dest"
			else
			echo "Enter the valid file or directory addresses" 
			fi
		else
		echo "please enter valid address as a source and destination to copy the files "
			fi ;;
		2) echo "enter the name of files want to be deleted"
		read files
		for f in "$files"
		do
		echo "$f\n"
		done  
		 ;;

		3) echo "\t the number of possible users on the system: `cat /etc/passwd |wc -l`"
		   echo "\t the number of current user on the system : `who | wc -l`"
		   echo "\t the number of processes running: `ps -e | wc -l`"
			 ;;


		*) exit ;; 
	esac
done

---------- Post updated at 02:13 AM ---------- Previous update was at 12:50 AM ----------

Code:
2) echo "enter the name of files want to be deleted"
		read a
		
	for CHARACTER in $a ; do
	  if [ -f $CHARACTER -o -d $CHARACTER ] ; then
		rm -ir $CHARACTER
	else
	echo "$CHARACTER is not a valid file or directory"
	fi
	done
		 ;;

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash read input in case statement not working as expected

I'm having an issue with bash read input when using a case statement. The script halts and doesn't read the input on the first loop. if I hit enter then the scripts starts to respond as expected. Need some help here. defaultans=8hrs read -e -i $defaultans -p "${bldwht}How long would you like... (5 Replies)
Discussion started by: woodson2
5 Replies

2. UNIX for Beginners Questions & Answers

Case inside While read File

Hi Experts, Need your guidance for case statement. I tried many way but no success yet.Now my existing code is doing something like below. Each Line of the input file contains one test case.#!/bin/bash FILE=$1 while read LINE; do do COMMAND done < $FILE Now I want to modify the code... (6 Replies)
Discussion started by: pradyumnajpn10
6 Replies

3. Shell Programming and Scripting

Unable to read user input inside a loop

Hi, This query is a part of a much more lengthy script. I wish to look for all the files in a folder named "data" which in this case has two files i.e. plan.war and agent.properties. For all the files found under data I wish to ask the user as to where they wish copy the files to. Below,... (14 Replies)
Discussion started by: mohtashims
14 Replies

4. Programming

Keyboard User Input in awk language ?

Hi, does someone know how to make a keyboard data input in the AWK programming language ? Regards Zabo (6 Replies)
Discussion started by: Zabo
6 Replies

5. Shell Programming and Scripting

Read input from Keyboard, do not proceed if no input

Hi, I am working on a script, which requests users to enter input. Ex: read -p "Please enter your email id:" email I don't want users skipping this entry, this has to be mandatory.I dont want to proceed without input. I can do a check if variable $email is empty and proceed if not.But, i... (7 Replies)
Discussion started by: aravindadla
7 Replies

6. Shell Programming and Scripting

Help with Bash piped while-read and a read user input at the same time

Hi I am new to writing script and want to use a Bash Piped while-read and read from user input. if something happens on server.log then do while loop or if something happend on user input then do while loop. Pseudocode something like: tail -n 3 -f server.log | while read serverline || read... (8 Replies)
Discussion started by: MyMorris
8 Replies

7. Shell Programming and Scripting

To ignore user input case.

hi, i will like to know whether awk command can ignore case? i written a script that will take in user input and search for data on the 1st field from a text file. echo -n "Title:" read title awk -F":" '$1~/'"$title"'/{print $0}' Filename read ans return ... (5 Replies)
Discussion started by: Cheranime
5 Replies

8. UNIX for Dummies Questions & Answers

Testing for correct user input from keyboard

What script can I use to catch errors in a shell script if user inputs alpha numeric characters instead on integers from the keyboard? (0 Replies)
Discussion started by: Pauline mugisha
0 Replies

9. Shell Programming and Scripting

read command (input) inside the while loop

Hi, 'read' command is not working inside the while loop, How can I solve this? Rgds, Sharif. (2 Replies)
Discussion started by: sharif
2 Replies

10. Shell Programming and Scripting

input inside while read loop

Hi all Does anyone have a script that will allow me to stop inside a while read loop. I want to pause the loop until a enter is pressed. e.g. While read line do echo something if LINECOUNT > 40 then read ENTER?"PRESS ENTER TO CONT..." ... (3 Replies)
Discussion started by: jhansrod
3 Replies
Login or Register to Ask a Question