Variable changes after a loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Variable changes after a loop
# 1  
Old 02-24-2011
Data Variable changes after a loop

Hi, I am a beginner with shell programming:
the code is following:

Code:
#!/usr/bin/ksh

v_res="start"
echo "v_res_begin="$v_res

grep -E "#FlatFiles" "a.log" | while IFS= read vLine
do

  set -- $vLine

  v_res="error"

  # there is some code ... if error then break


  echo "v_res_loop1="$v_res
  v_res="ok"
  echo "v_res_loop2="$v_res

done

echo "v_res_after_loop="$v_res


file a.log:
Code:
*************** Start of Group read and Group insert log ***************

#FlatFiles 10001 17487 test1.ctl test1.bad 12944
#FlatFiles 10001 17488 test1.ctl test1.bad 18119
#FlatFiles 10001 17489 test1.ctl test1.bad 11526

result:

Code:
v_res1=start
v_res2=ok
v_res1=error
v_res2=ok
v_res1=error
v_res2=ok
v_res_after_loop=error

This script was working on AIX, now it is on READHAT. I found out (google), that if pipe is used than it is in different scope and global parameters are not set ... but I do not undestand what does it really mean, and how can I fix the code.

Thank for Your help, regards,
Laci

Last edited by pludi; 02-24-2011 at 03:46 PM..
# 2  
Old 02-24-2011
The problem is inside of:
Code:
  # there is some code ... if error then break

Without seeing that part of the code, there is no way to know.
# 3  
Old 02-24-2011
# there is some code ... if error then break

that part does not affect the result ... for test I also deleted it and logically it is not working...
# 4  
Old 02-24-2011
Code:
#!/usr/bin/ksh

v_res="start"
echo "v_res_begin="$v_res

while IFS= read vLine
do


  if [ "${vLine%%${vLine##?}}" != '#' ]; then
     continue
  fi

  set -- $vLine

  v_res="error"

  # there is some code ... if error then break


  echo "v_res_loop1="$v_res
  v_res="ok"
  echo "v_res_loop2="$v_res

done < a.log

echo "v_res_after_loop="$v_res

# 5  
Old 02-25-2011
Bug

vgersh99 - thanks a lot Smilie

I do not really undestand this line - but come up to that it is controlling only the first character of the line - i need to control the first word - #FlatFiles
Code:
if [ "${vLine%%${vLine##?}}" != '#' ]; then

I modified it to:
Code:
#!/usr/bin/ksh

echo "###################################################"

v_res="start"
echo "v_res_begin="$v_res

while IFS= read vLine
do

  set -- $vLine
 
  if [ "$1" != "#FlatFiles" ]; then
    continue
  fi

  v_res="error"

  # there is some code ... if error then break

  echo "v_res_loop1="$v_res
  v_res="ok"
  echo "v_res_loop2="$v_res

done < a.log

echo "v_res_after_loop="$v_res


Last edited by Franklin52; 02-25-2011 at 05:55 AM.. Reason: Please use code tags, thank you
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Solved] How to increment and add variable length numbers to a variable in a loop?

Hi All, I have a file which has hundred of records with fixed number of fields. In each record there is set of 8 characters which represent the duration of that activity. I want to sum up the duration present in all the records for a report. The problem is the duration changes per record so I... (5 Replies)
Discussion started by: danish0909
5 Replies

2. Shell Programming and Scripting

Array Variable being Assigned Values in Loop, But Gone when Loop Completes???

Hello All, Maybe I'm Missing something here but I have NOOO idea what the heck is going on with this....? I have a Variable that contains a PATTERN of what I'm considering "Illegal Characters". So what I'm doing is looping through a string containing some of these "Illegal Characters". Now... (5 Replies)
Discussion started by: mrm5102
5 Replies

3. UNIX for Dummies Questions & Answers

Loop and variable not exactly variable: what's wrong

Hello guys, This truly is a newbie question. I'm trying to make a loop to execute simultaneous commands indefinitely while using variable. Here is how my mess looks like (this is just an example): #!/bin/bash IP=`shuf -n 1 IP.txt` # I figured this would be easier to select random lines... (4 Replies)
Discussion started by: bobylapointe
4 Replies

4. Shell Programming and Scripting

printing variable with variable suffix through loop

I have a group of variables myLINEcnt1 - myLINEcnt10. I'm trying to printout the values using a for loop. I am at the head banging stage since i'm sure it has to be a basic syntax issue that i can't figure out. For myIPgrp in 1 2 3 4 5 6 7 8 9 10; do here i want to output the value of... (4 Replies)
Discussion started by: oly_r
4 Replies

5. Shell Programming and Scripting

[SHELL: /bin/sh] For loop using variable variable names

Simple enough problem I think, I just can't seem to get it right. The below doesn't work as intended, it's just a function defined in a much larger script: CheckValues() { for field in \ Group_ID \ Group_Title \ Rule_ID \ Rule_Severity \ ... (2 Replies)
Discussion started by: Vryali
2 Replies

6. Shell Programming and Scripting

For loop with one variable as the name of other

Hello all, I find it hard to explain what I need so I will post the code OVZINCLUDE="16810 16811 1689" PLUS_16810="test" PLUS_16811="test" for VPS in $OVZINCLUDE do echo "Dumping VPSes: $OVZINCLUDE " vzdump --compress --snapshot ${PLUS_$VPS} $VPS done ... (2 Replies)
Discussion started by: click
2 Replies

7. Shell Programming and Scripting

Help with variable using loop

Hi I have webserver that I do read data from. Data are stored like this: Huston |1 Portland |2 Hazen |1 Minneapolis |4 Albany |1 Pittsburg |1 Albany |1 Huston |1 Portland|1 Hazen |2 Albany |2 Huston |1 Hazen |1 Script #!/bin/sh user="admin" (1 Reply)
Discussion started by: Jotne
1 Replies

8. Shell Programming and Scripting

For loop Variable

Hi, Is it possible to assign one variable to other. eg. v1="table1" v2="20000" I want table1 to assign 20000 table1=20000 Is there any way? Thanks (2 Replies)
Discussion started by: SushilM
2 Replies

9. Shell Programming and Scripting

loop through variable

i have these data in a variable "$test" BUNGA TERATAI 3 5055 ITH 1 1 JADE TRADER 143W ITH 4 4 MOL SPLENDOR 0307A ITH 3 3 the red coloured are the ones that i want to take and compare what I need to do is to take out the red coloured and then compare to another variable, if same then... (0 Replies)
Discussion started by: finalight
0 Replies

10. Shell Programming and Scripting

variable in a for loop

Hi... i am trying to ping my servers .The hostnames are present in a file .They are separated by spaces in the file . i am doing the following : a=1 for name in $(cat host2 |cut -d" " -f$a) do echo Pinging server $name ping -c5 $name a=$a+1 done It is... (3 Replies)
Discussion started by: sars
3 Replies
Login or Register to Ask a Question