loops in loops


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting loops in loops
# 1  
Old 01-19-2004
loops in loops

ok, i tried to write a script called purge.sh
which searches current process' for a specified user running a process with a specified keyword. it also prompts the user to see how many times to purge for the specified process and how many different processes they wish to do this to.it worked until i added the part where it purges for the process as many times as you specified because that required a loop in a loop. Anyway , i got a bunch of errors so could someone tell me what i did wrong? its a little confusing so here's the code:


#!/bin/bash
clear
echo " "
echo " "
echo "Purge: Search for and kill target process(Case sensitive)"
echo " "
echo -n "Enter amount of times you wish to search/kill processes:"
read query_number
while [ $query_number -gt "0" ]; do
echo -n "How many times should Purge try and kill target process?('infinite' for never-ending purging)"
read purge_number
if [ $purge_number = "infinite" || $purge_number = "Infinite" ]; then
$purge_number="99999999999"
echo -n "Enter search terms for the target process:"
read search_terms
echo -n "Enter user running process('all' for everyone):"
read process_host
while [ $purge_number -gt "0" ]; do
if [ $process_host != "all" ]; then
process_line=$(ps -U $process_host | grep $search_terms)
echo $process_line
kill $process_line
done
else
process_line=$(ps -axc | grep $search_terms)
kill $process_line
fi
((purge_number=purge_number-1))
done
((query_number=query_number-1))
done

anybody know what i could do to fix it??
# 2  
Old 01-19-2004
in your 2nd while loop it looks like your trying to use $purge_number as a interger when it is already a scalar. so instead of a "-gt" use $var > "0"

Code:
#!/bin/bash
clear
echo " "
echo " "
echo "Purge: Search for and kill target process(Case sensitive)"
echo " "
echo -n "Enter amount of times you wish to search/kill processes:"
read query_number

while [ $query_number -gt "0" ]; do
	echo -n "How many times should Purge try and kill target process?('infinite' for never-ending purging)"
	read purge_number
	if [ $purge_number = "infinite" || $purge_number = "Infinite" ]; then
		$purge_number="99999999999"
		echo -n "Enter search terms for the target process:"
		read search_terms
		echo -n "Enter user running process('all' for everyone):"
		read process_host
		while [ $purge_number >  "0" ]; do #i think you are trying to use $purge_number out of context.
			if [ $process_host != "all" ]; then
				process_line=$(ps -U $process_host | grep $search_terms)
				echo $process_line
				kill $process_line
				done
			else
				process_line=$(ps -axc | grep $search_terms)
				kill $process_line
			fi
			((purge_number=purge_number-1))
		done
		((query_number=query_number-1))
done

# 3  
Old 01-19-2004
Please use CODE tags and format your script so it's easier to read! Trying to read a long, unformatted script can give a person headaches... Smilie

-----
Even though Optimus_P appears to have fixed it, I think you should still format the code in your script so as you're going along, so there's less chance of getting yourself confused.
# 4  
Old 01-19-2004
thanks for the help. and ill try to remeber code tags and to format my code in the future. but how do you format code in vi? i cant make indentations all i can do is single spaces. do you know?
# 5  
Old 01-19-2004
im still getting an error when i run it. this is what happens when i run it and enter "1" in the first prompt(should there be any kind of tags around what im posting here, oombera?):


Purge: Search for and kill target process(Case sensitive)

Enter amount of times you wish to search/kill processes: 1
./purge2.sh: line 24: syntax error near unexpected token `done'
./purge2.sh: line 24: ` done'


any help?
# 6  
Old 01-19-2004
You have other syntax errors, but this should help you get past the error you have now:

You have an extra done and are missing a fi

$ diff ick44 ick45
23c23,24
< kill $process_line"
---
> kill $process_line
> done
26c27
< kill $process_line"
---
> kill $process_line
31d31
< fi

Cheers,

Keith
# 7  
Old 01-19-2004
that helped, thanks.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Need help with for loops

Why wont my for statements work? Im trying to get this script to swich to a user an if you put in a start/stop/or restart paramater to do just that for each user. I commented out the actual start/stop actions to test it just by using echos and not do anything hasty in the environment but it... (0 Replies)
Discussion started by: LilyClaro
0 Replies

2. UNIX for Dummies Questions & Answers

loops with tr

Hello, I'm not sure if this is more appropriate for the 'unix for dummies' or the 'unix for experts' forum because I'm new to this forum and this is the second topic I've discussed, but if you could let me know which one was more appropriate for something like this, please do! So in tr (an... (2 Replies)
Discussion started by: juliette salexa
2 Replies

3. Shell Programming and Scripting

Loops

Hi All, I want to execute a script the number of times a user enters. Please can you advise on hor can I do the same. Many Thanks, Shazin (4 Replies)
Discussion started by: Shazin
4 Replies

4. Shell Programming and Scripting

Help with the 2 for loops

#!/bin/bash IFS=$'\n' A= a c b t g j i e d B= t y u i o p counter=0 found="" for i in $(cat $A) do for j in $(cat $B) do if then found="yes" fi done if then (1 Reply)
Discussion started by: vadharah
1 Replies

5. UNIX for Dummies Questions & Answers

Help with While Loops

I am traversing down a list, and I am not quite sure how to tell the loop to break when it's done going through the file. #!/bin/sh while : do read list <&3 echo $list done is the code. The file "list" is simply 5 4 3 2 1 any advice on how to break the loop after the file is... (1 Reply)
Discussion started by: MaestroRage
1 Replies

6. Shell Programming and Scripting

while loops

Hi I've a file like so: Now, I want to read my file and take ex. the Media ID and the Type for each groups of Media (Media1,Media2,...,Media(n): cat /tmp/file|\ while read FILE do while $(FILE|cut -d: -f1)=Media$i do #here will be some test, ex: #if Media ID < 23 ... (4 Replies)
Discussion started by: nymus7
4 Replies

7. UNIX for Dummies Questions & Answers

two loops

Hi, how can I use "for" to have two loops : this is my script : for i in (A B C) do for j in (a b c) do echo $i$j done done #End I want to print out Aa Ab Ac .... But I have error message : syntax error at line 1 : `(' unexpected Many thanks before. How should I use "for" ?? (2 Replies)
Discussion started by: big123456
2 Replies

8. UNIX for Dummies Questions & Answers

While Loops

I'm trying to create a loop that will prompt the user for 15 values, not forcing them to enter all 15. If the user enters through one or more of the prompts the null value needs to be converted to 0, otherwise set the parameter = to the value entered: ex. Please enter file no #1: 17920 ... (4 Replies)
Discussion started by: vdc
4 Replies

9. Shell Programming and Scripting

Loops within loops

I am running on HPUX using ksh. I have a script that uses a loop within a loop, for some reason the script seems to hang on a particuliar record. The record is fine and hits the condition in Blue. If I kill the 1st loop process the script continues on with no problem. Begin code> <Some... (8 Replies)
Discussion started by: bthomas
8 Replies

10. UNIX for Dummies Questions & Answers

loops?

hello....very new user to unix...and i have a question..i am not sure if there is such a thing For example...the user is asked if he likes Bananas....if he says yes.... echo You like Bananas $name at the end of the script it echos all that the user has entered so they can read it.... but... (1 Reply)
Discussion started by: jonas27
1 Replies
Login or Register to Ask a Question