assign value to variable is not working


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting assign value to variable is not working
# 1  
Old 10-12-2006
Question assign value to variable is not working

Hi Smilie

The next script campares two files File1-Line1 vs File2-Line1, File1-Line1 vs File2-Line2... only if line contains "AS-", if LineX is not in File2 writes in aux, but "valor" is allways=1 never changes! Smilie What is wrong?
valor changes to 0 before break, after brake is again 1

#!/bin/ksh

echo > aux

while read label
do
valor=1
echo $label | grep "AS-"
if [ $? -eq 0 ]
then
while read labelold
do
if [ "${label}" = "${labelold}" ]
then
#echo "encon" >aux2
valor=0
echo $valor
break
fi
echo $valor #<--- Allways is 1 Smilie
done < hosts.old
if [$valor -eq 1]
then
echo "$label" >> aux
fi
fi
done < hosts

Last edited by agustincm; 10-12-2006 at 01:44 PM.. Reason: more info
# 2  
Old 10-12-2006
Whenever you pipe things into a loop, that loop becomes its own process, with it's own seperate process space -- which inherits variables you already have, but things it sets don't propogate back.
# 3  
Old 10-12-2006
You can write the variable into a file in the loop
# 4  
Old 10-13-2006
Code:
#!/bin/ksh

echo > aux

while read label
do
   valor=1
   echo $label | grep "AS-"
   if [ $? -eq 0 ]
   then
      while read labelold
      do
         if [ "${label}" = "${labelold}" ]
         then
            #echo "encon" >aux2
            valor=0
            echo $valor
            break
         fi
         echo $valor #<--- Allways is 1
      done < hosts.old
      if [$valor -eq 1]
      then
         echo "$label" >> aux
      fi
   fi
done < hosts

After assigning the value 0 to your variable, you break the while loop so you never display the variable with the new value 0.

Whith KSH the modification of variable inside loops aren't lost (that is not the case with bourne shell).
Try the following script:
[CODE]var=init
ls | while read file
do
var="Last file is $file"
done



Jean-Pierre.

Last edited by aigles; 10-13-2006 at 08:46 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Using read to assign value to bash variable not working

Hi, I am attempting to assign the output of the following command, to two bash variables, var1 and var2 using "read," but it doesn't seem to be working. # openstack hypervisor stats show | awk -F'|' 'NR==14{print $2,$3}' vcpus 92 # echo $? 0 # openstack hypervisor... (4 Replies)
Discussion started by: sand1234
4 Replies

2. UNIX for Beginners Questions & Answers

How can I assign awk's variable to shell script's variable?

I have the following script, and I want to assign the output ($10 and $5) from awk to N and L: grdinfo data.grd | awk '{print $10,$5}'| read N L output from gridinfo data.grd is: data.grd 50 100 41 82 -2796 6944 0.016 0.016 3001 2461. where N and L is suppose to be 3001 and 100. I use... (8 Replies)
Discussion started by: geomarine
8 Replies

3. UNIX for Beginners Questions & Answers

Need to pass variable in a command and assign value to a variable

Hello All, Hope you're doing well ! I am trying below command to be passed in a shell script, header_date_14 is a variable and $1 is the name of a file I intend to pass as a command line argument, however command line argument is not being accepted. header_date_14=$(m_dump... (8 Replies)
Discussion started by: ektubbe
8 Replies

4. Shell Programming and Scripting

assign var with set=a[5] not working

Hi Experts, I'm having issue in assigning var with special character , please see below for complete details. $ echo $SHELL /bin/csh $ cat bp abd/asd/a $ awk -F "/" '{print $NF}' bp | awk '{print $1}' a $ set a=`awk -F "/" '{print $NF}' bp | awk '{print $1}'` $ echo $a ... (15 Replies)
Discussion started by: novice_man
15 Replies

5. Shell Programming and Scripting

Shell assign variable to another variable

How can I assign a variable to an variable. IE $car=honda One way I can do it is export $car=honda or let $car=2323 Is there any other ways to preform this task (3 Replies)
Discussion started by: 3junior
3 Replies

6. Shell Programming and Scripting

assign awk's variable to shell script's variable?

Dear All, we have a command output which looks like : Total 200 queues in 30000 Kbytes and we're going to get "200" and "30000" for further process. currently, i'm using : numA=echo $OUTPUT | awk '{print $2}' numB=echo $OUTPUT | awk '{print $5}' my question is : can I use just one... (4 Replies)
Discussion started by: tiger2000
4 Replies

7. Shell Programming and Scripting

Not able to assign a value to variable

Hi Experts, I am facing some problem while developing the script.My input config.csv file contains the three columns namely pathname,filename,filetype.Based on the file type i have to use ftp command that is if filetype=csv then do ftp. The input file is cat config.csv... (13 Replies)
Discussion started by: Amey Joshi
13 Replies

8. Shell Programming and Scripting

assign a value to a variable

I have a list of names in a file. i want to assign those names to a variable in such a manner eg: $cat file.txt pete lisa john var=pete-lisa-john how do i do this in shell scripting? (10 Replies)
Discussion started by: Shivdatta
10 Replies

9. Shell Programming and Scripting

assign a value to variable

I have to assign a result of a query to a vairable like this how can i do this Query = select count(*) from table x=`db2 ${Query}| sed -n '4p'` but this doesn't work, is there any other way to assign the result without redirecting the result to temp file. . Thanks Mark. (3 Replies)
Discussion started by: markjason
3 Replies

10. UNIX for Dummies Questions & Answers

assign to variable

why i can't use this command: echo $arg | cut -c 1,2 | read remainArg or echo $arg | cut -c 1,2 | read $remainArg so that the result will be assign to remainArg. Anyway to do this? :) (1 Reply)
Discussion started by: AkumaTay
1 Replies
Login or Register to Ask a Question