BASH Guru needed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm trying to read a file into an array and not having much success.

The following test script is self contained. 

#!/bin/bash

# Create a test file to read
cat >/tmp/junkfile <<-"CODE"
line 1
line 2
line 3
CODE

echo ===========Loop 1==============
declare -a RULES
i=0
j=4

# Read the test file line by line into the RULES array.
cat /tmp/junkfile| while read x; do
   RULES[i++]="$x"
   # Show what RULES contains
   echo j=$j i=$i RULES has ${#RULES[*]} elements. ${RULES[*]}
done
echo j=$j i=$i RULES has ${#RULES[*]} elements. ${RULES[*]}


echo ===========Loop 2==============
declare -a rules
i=0
j=4

while test $i -lt 3; do
   rules[i++]="line $((i+1))"
   # Show what rules contains
   echo j=$j i=$i rules has ${#rules[*]} elements. ${rules[*]}
done
echo j=$j i=$i rules has ${#rules[*]} elements. ${rules[*]}

rm /tmp/junkfile

///////////////////////////////////////////////////////////////////////
If you run it (its harmless) you'll get the following output:

===========Loop 1==============
j=4 i=1 RULES has 1 elements. line 1
j=4 i=2 RULES has 2 elements. line 1 line 2
j=4 i=3 RULES has 3 elements. line 1 line 2 line 3
j=4 i=0 RULES has 0 elements.
===========Loop 2==============
j=4 i=1 rules has 1 elements. line 1
j=4 i=2 rules has 2 elements. line 1 line 2
j=4 i=3 rules has 3 elements. line 1 line 2 line 3
j=4 i=3 rules has 3 elements. line 1 line 2 line 3

The first loop appears to stuff the array with values and i is steadily increasing. 
After the loop ends, i is 0 and the array is empty. Why?
Since i & j are initialized prior to loop start, and displayed during the loop, why is j's value maintained across the loop and i appears to get reinitialized to the pre loop value?

The second loop is similar. Again j keeps its value the entire time, and i gets increased steadily. At loop end both j and i are what I would expect them to be. 

How are these two loops different? It has to have something to do with the read statement but I can't figure it out.

Thank You

Bill Gradwohl
(817) 224-9400 x211
www.ycc.com
SPAMstomper Protected Email


-- 
Shrike-list mailing list
Shrike-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/shrike-list

[Index of Archives]     [Fedora Users]     [Centos Users]     [Kernel Development]     [Red Hat Install]     [Red Hat Watch]     [Red Hat Development]     [Red Hat Phoebe Beta]     [Yosemite Forum]     [Fedora Discussion]     [Gimp]     [Stuff]     [Yosemite News]

  Powered by Linux