Problem with Looping


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with Looping
# 1  
Old 06-11-2013
Question Problem with Looping

Hi, guys,

What I want is exactly shown below (I modified the former image and it looks like clearer.)
Image

And with some guys' help, I made it. My script is below:
Code:
#!/bin/bash
# name: loginname_validate
# purpose: to validate the loginname which is used to add a new user
i=0
while [ $i -ne 1 ]
do
	read -p "Please enter a new loginname: " loginname
	if [ -z "$loginname" ]
	then
		echo "You should enter a nonempty loginname."
		continue 1
	elif [ ${#loginname} -lt 8 -o ${#loginname} -gt 16 ]
	then
		echo "The length of loginname must between 8 and 16 characters long."
		continue 1
	elif echo "$loginname" | awk '/^[-a-Z]/ && /[a-z]/ && /[A-Z]/ && /[0-9]/ && /\W/ { X=1 } END { exit(!X) }'
	then
		echo "You have entered a valid loginname."
		break
	else
		echo "The loginname, which you entered, must start with a underscore or an alphabet, and it must contain at least one lowercase and one uppercase and one digit and one punctuation."
		continue 1
	fi
done

Thanks!

Last edited by franksunnn; 06-11-2013 at 09:20 PM.. Reason: made a promotion.
# 2  
Old 06-11-2013
What kind of problem is this?

While intrigued about answering a question based on a flowchart, is does appear to be a homework problem.

Please advise on the nature of this request, or if homework, then post the question in that special forum.
# 3  
Old 06-11-2013
Of course it's not a homework problem.
I'm writing a script to create a Linux user automatically. And I want to determine whether the loginname already exists(condition 1) and its length is more than 8-chars(condition 2) and it contains uppercase/lowercase/numeric/punctuation(condition 3). If it meets all conditions, that means it is a valid loginname.
That's OK? And will you not prevent others helping me, will you?
# 4  
Old 06-11-2013
You could do something like:
Code:
# Create a variable i
typeset i=value

# Does i meet condition 1
if [ i == whatever condition 1 ]
then
        # Does i meet condition 2
        if [ i == whatever condition 2 ]
        then
                # Does i meet condition 3
                if [ i == whatever condition 3 ]
                then
                        # Action if all conditions are met
                else
                        # Action if i does not meet condition 3
                fi
        else
                 # Action if i does not meet condition 2
        fi
else
        # Action if i does not meet condition 1
fi

# 5  
Old 06-11-2013
Hi, Yoda,
Thanks. However, it doesn't meet my need.
For instance, if the variable i doesn't meet the condition 3, I want to recreate the variable i. How can I return the code
Code:
# Create a variable i
typeset i=value

and determine the variable i from the beginning?
# 6  
Old 06-11-2013
Be careful - if you don't modify the creation of the variable, you're stuck in an infinite loop. So you better not define i to be a constant. However, depending on your shell (bash in my case), this may work for you:
Code:
until typeset i=J; [ "$i" cond1 -a "$i" cond2 -a "$i" cond3 ]; do :; done

# 7  
Old 06-11-2013
This is shell, you don't "create" a variable per se. If you use a variable you haven't used before, it's just blank, not an error.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Looping problem

I need help. I am trying to get this script to send out only one email not multiple emails of the abend. Currently it will send me one then and ther with the first and second one then another email with the first second and third abend and so on. I only want one email sent. ... (2 Replies)
Discussion started by: bbcarosi
2 Replies

2. Shell Programming and Scripting

perl: problem in looping! how to get rid

Hi i just want to open 2 files and find difference between cond1 and cond2 and if the difference is greater than or equal to some number say 2 print the lines again in 2 different files. file 1 (1.txt) aqw dfr 34 poilo ggg 98 file 2 (2.txt) qww asd 28 poilo ggg 97 open FILE1,"1.txt" or... (2 Replies)
Discussion started by: anurupa777
2 Replies

3. Shell Programming and Scripting

looping problem

I have been trying to come up with a program that can do this: Say I have a file named "sir" with a single field; 10 229 288 35 83 47 3 I want to create a file "gen" with three fields with the data in file "sire" listed in field 1 while field 2 and 3 are just 1 each like this: SPARSE... (1 Reply)
Discussion started by: iconig
1 Replies

4. Solaris

SVM Solaris 8 Problem. Metastat output looping

Hi friends, I'm newbie to SVM. Just wanna try installed it on one of our server (to do mirroring for disk0 and disk1) but i think im lost until now. :( the steps i've taken is as below:- 1.prtvtoc /dev/rdsk/c1t0d0s2 | fmthard -s - /dev/rdsk/c1t1d0s2 2.metadb -a -c 3 -f c1t0d0s7... (3 Replies)
Discussion started by: kronenose
3 Replies

5. Shell Programming and Scripting

Problem with looping the directories

Hi all, I have a directory which has many sub-directories. Now, I want to check the space of each dir and redirect the output in a file if space exceeds the limit. I have already done it, but the way I did is not very good. I just listed the directories and awked the last column to get the... (5 Replies)
Discussion started by: naw_deepak
5 Replies

6. Shell Programming and Scripting

help with looping

vesselNames values: xxx yyy zzz vesselPlanned values: xxx zzz zzz zzz OIFS="" OIFS=$IFS IFS="\n" (2 Replies)
Discussion started by: finalight
2 Replies

7. Shell Programming and Scripting

for looping

I run into a issue when I try to do sorting of the following with ascending order, one round of for looping seems not working, anyone knows how to use shell or perl? $array = (5,0,3,2,7,9,8) (2 Replies)
Discussion started by: ccp
2 Replies

8. Shell Programming and Scripting

Problem with looping construct

Hi all I have tried to search for this, but keep getting a MySQL db connect error, so am posing the question here, and taking a risk of incurring the wrath of the mods with my first post... I have the following test script: #!/bin/bash HTTPD=`/bin/ps -axcu | /usr/bin/grep httpd... (6 Replies)
Discussion started by: mikie
6 Replies

9. Shell Programming and Scripting

Awk: looping problem!

I am having a problem with awk when I run it with a loop. It works perfectly when I echo a single line from the commandline. For example: echo 'MFG009 9153852832' | awk '$2 ~ /^0-9]$/{print $2}' The Awk command above will print field 2 if field 2 matches 10 digits, but when I run the loop... (5 Replies)
Discussion started by: cstovall
5 Replies

10. UNIX for Dummies Questions & Answers

Help with looping

Hi, Actually I have a file which consists data . for eg names. Then I want my sql query to read this file and produce the output. Currently I am using this FOR EG : FILENAME is NAMES for i in `cat NAMES` { sqlplus -s $CONNECTID << EOF spool rooh set heading off select... (1 Reply)
Discussion started by: rooh
1 Replies
Login or Register to Ask a Question