While loop in a nested if returns 'do unmatched'


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers While loop in a nested if returns 'do unmatched'
# 8  
Old 09-08-2008
Quote:
Originally Posted by switchkill
Code:
#! /bin/ksh

clear
echo "Enter location of home directory"
echo
read home
if [ ! -d ${home} ]; then	
	echo
	echo "**********************************************"
	echo "*The home directory specified does not exist!*"
	echo "**********************************************"
	echo
	echo "Directory ${dir} needs to be created"
	echo "to continue!"
	echo
	echo "Press <y> to create or <n> to exit"
	echo 
	read INPUT		
	if [ ! $INPUT = "y" ]; then
		echo "User must have home dir."
		echo "press any key to start again"
		read b
		/ACCT/use
	fi
	mkdir -p ${home}
fi
echo "Enter location of file where user information is kept."
read user

if [ -s $user ]; then
	echo
	echo $home
	while read user
	do
		in=`echo $user |cut -c1`
		sur=.`echo $user |cut -d" " -f2`
		com=`echo $user |cut -d: -f2`
		gid=`echo $user |cut -d: -f3`
		ACCT=${in}${sur}
		echo "account $ACCT"
		echo "comment: $com"
		ver=`grep ${ACCT}: "/etc/passwd"`
		if [ ! -n $ver ]
		then
			ACCT="${ACCT}1"
		fi
		useradd -g ${gid} -d ${home}/${ACCT} -m -s /bin/bash -c "${com}" ${ACCT}
		chown -R ${ACCT} ${home}/${ACCT}
		chgrp -R ${gid} ${home}/${ACCT}
		chmod 755 ${home}/${ACCT}
		echo "Account ${ACCT} created."
		echo
	done < ${user}
else
        echo "File $user does not exist"
        echo "Setup cannot contine"
        echo "Press enter to return to main menu"
        read
        /ACCT/CASE
fi
tp1=`sed -n 1p $user |cut -c1`
tp2=.`sed -n 1p $user |cut -d" " -f2`
passw=${tp1}${tp2}
passwd ${passw}
PASSWORD=`grep "$passw" /etc/shadow |cut -d: -f2`

while read user
do
	int=`echo $user |cut -c1`
	surt=.`echo $user |cut -d" " -f2`
	ACCT=${int}${surt}
	ed /etc/shadow <<EOF
g/${ACCT}:/s/:\*LK\*:/:${PASSWORD}:
w
q
EOF
		
done < $user

echo "The following accounts have been created sucsesfuly"
ver=`grep ${ACCT}: "/etc/passwd"
if [ -n $ver ]; then
	echo `grep " " ${userd}1 |cut -d: -f1`
fi
echo `grep " " $user |cut -d: -f1`
echo
echo "Press enter to return to the main menu"
echo
read
/ACCT/CASE

(Ammended your CODE tags so they work)

Nothing looks obviously wrong with your script at first glance, where exactly is it hanging?
Try adding -x to you #! path at the top of your script (#!/bin/ksh -x) and running your script again. It'll show you each command as it's evaluated.

As an aside, I'd not recommend reusing that $user variable like you are (doing a read user < $user). It seems to be working for you but it's a great way to get some confusing results. I'd suggest changing the variable name of the big userlist to $users instead, then doing a while read user ..... done <$users. More for clarity than any other reason though Smilie

Last edited by Smiling Dragon; 09-08-2008 at 11:17 PM.. Reason: Cleaned up indenting
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Nested loop -bash

I am using the following nested loop for i in {1..3} do for y in {1..3} do if ; then echo P0${i}R${y}.fas mv P0${i}R${y}.fas P${i}R${y}.fas read -t 5 fi done done I was wondering if I can use a character such as * or ? instead of my second variable y. I tried R in... (3 Replies)
Discussion started by: Xterra
3 Replies

2. Programming

MPI C++ in a nested loop

I have a MPI program like this: void slave1(int j){ MPI_Status status; MPI_Recv(&j,1,MPI_INT,0,0,MPI_COMM_WORLD,&status);} void slave2(int j){ MPI_Status status; MPI_Recv(&j,1,MPI_INT,0,1,MPI_COMM_WORLD,&status);} int main(int argc, char *argv){ int numprocs, rank; ... (0 Replies)
Discussion started by: wanliushao
0 Replies

3. Shell Programming and Scripting

Nested if loop

Hi Team, I just want to check whether my nested if loop used is correct or not. if ] if ] export1 else export2 fi else if ] export3 else export4 fi fi Thanks Shiva (5 Replies)
Discussion started by: shivashankar_S
5 Replies

4. Shell Programming and Scripting

Nested for loop in bash

Hi, How to use values in one for loop to other for loop. say "$sf_rel" variable has values "2011/W2 2011/G2" I want to use these values in inner for loop to process properly. $branch variable has G2 and 6 What is happening is outer for loop $i has 2011/W2 it is entering into inner... (3 Replies)
Discussion started by: Anjan1
3 Replies

5. Shell Programming and Scripting

for loop returns more output with awk

I need to get total number of hdisk not assigned to any VGs. PDC # lspv |grep None |awk '{print $1}' |wc 131 131 1099 So, it shows 131 hdisks. I need to look at the individual hdisk fget_config info like below: PDC # fget_config -Av |grep hdisk230 hdisk230 dac1 229... (4 Replies)
Discussion started by: Daniel Gate
4 Replies

6. Shell Programming and Scripting

Nested loop in Unix

Hi, I have the following script which is two while loops, but it is working only for the Inner loop without going back to the outer loop. the aim of this script is to remove data files from memory after each five times for each setting of the rotate parameter #!/bin/csh set hdir =... (1 Reply)
Discussion started by: moon218
1 Replies

7. Shell Programming and Scripting

Nested Loop becomes slow

Hello I have some nested loop to display files and form menu item. The part of the code is below. I found that after runnining the script for a while the display becomes very slow. Does ksh shell provided any easy way to release variables, reinit, etc. while ];do script=0 ... (2 Replies)
Discussion started by: ekb
2 Replies

8. Shell Programming and Scripting

Variable in While Loop Nested If

Hi all, I'm having problems with the setting a variable in a nested if statement. It doesn't seem to change even if it mets the 'if' condition. My script essentially looks for a user name from the output from a kerberos command. When I find the user name, I tried to change a variable and exit... (6 Replies)
Discussion started by: geass
6 Replies

9. Shell Programming and Scripting

nested loop

I have two do loops. When I break of the inner loop it doesn't go back to the outer loop but exit the program. (5 Replies)
Discussion started by: chinog
5 Replies
Login or Register to Ask a Question