Variable in While Loop Nested If


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Variable in While Loop Nested If
# 1  
Old 03-26-2007
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 the script.

I'm using sh under Fedora Core 5.

Here is part of my script:

#!/bin/sh

#Constants and Globals
USER_EXISTS=1
USER_DOESNT_EXIST=0
user_name=
g_exitcode=

#note: I parse the $user_name from the command line arguments

#Main
g_exitcode=$USER_DOESNT_EXIST

kas list | while read i
do
echo "$i : $user_name"
#compare the user_name with each entry in the kas database
if [ "$user_name" = "$i" ]; then
#Match found
g_exitcode $USER_EXISTS
break
fi
done

exit $g_exitcode

So, even if a match is found, and it enters the nested if statement and sets the g_exitcode to USER_EXISTS at that point, I always exit the script with g_exitcode=USER_DOESNT_EXIST.

Sorry, I'm a little new to scripting. Any help would be appreciated

0
# 2  
Old 03-26-2007
g_exitcode $USER_EXISTS

You need to add an equals sign.

g_exitcode=$USER_EXISTS
# 3  
Old 03-26-2007
Hi perdarabo,I ran the script with small modification but it gives desired result with ksh shell and not in sh shell
please suggest why it is happening


Code:
#Constants and Globals
USER_EXISTS=1
USER_DOESNT_EXIST=0
user_name=$1

#g_exitcode
#export g_exitcode

#note: I parse the $user_name from the command line arguments

#Main
g_exitcode=$USER_DOESNT_EXIST
export g_exitcode

cat kas|{ while read i
 do
echo "$i : $user_name"
#compare the user_name with each entry in the kas database
if [ "$user_name" = "$i" ]; then
#Match found
echo "match found"
echo "$g_exitcode"
g_exitcode=$USER_EXISTS
echo "$g_exitcode"
echo "$g_exitcode $USER_EXISTS"


#break
fi

done }
echo "exit code $g_exitcode"
exit $g_exitcode

output with sh shell
Code:
> sh u102.sh sunil
sunil : sunil
match found
0
1
1 1
exit code 0

output with ksh
Code:
> ksh u102.sh sunil
sunil : sunil
match found
0
1
1 1
exit code 1

# 4  
Old 03-26-2007
You probably used Solaris where sh is the bourne shell rather than bash.
# 5  
Old 03-26-2007
yes exactly i used solaris.So in solaris bourne shell when we assign value in while loop it gets lost out of that while loop.
Is there any way to retain that value.
# 6  
Old 03-26-2007
Switch to ksh or bash.
# 7  
Old 03-26-2007
Thanks for the help.

I switched to ksh and it's working fine now.
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 for loop not ending

Hi All, Need help on below script for g in `cat /home/sid.txt` do for h in `cat /home/dev.txt` do symmaskdb -sid $g -dev $h list assign |grep FA |head -1|awk '{print $2}' > tt1.txt done done cat /home/sid.txt ************** 123 235 456 (5 Replies)
Discussion started by: ranjancom2000
5 Replies

4. 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

5. UNIX for Dummies Questions & Answers

Nested loop code

Greetings, Would anyone be able to tell me why this nested loop doesn't seem to work in any variation? for i in {1..8} do echo "i is "$i for j in {1..i} do echo "j is "$j done doneoutput is always along the lines of i is 1... (7 Replies)
Discussion started by: barnhillec
7 Replies

6. 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

7. 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

8. Shell Programming and Scripting

Enviornment Variable in B shell (I call it nested variable)

#!/bin/sh APP_ROOT_MODE1=/opt/app1.0 APP_ROOT_MODE2=/opt/app2.0 APP_ROOT=${APP_ROOT_${APP_MODE}} # enviornment variable APP_MODE will be exported in the terminal where # we run the applciation, its value is string - MODE1 or MODE2 # My intension is: # when export APP_MODE=MODE1... (4 Replies)
Discussion started by: princelinux
4 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