Bash and arrays
Bryan Venteicher
bryanv at daemoninthecloset.org
Wed Jul 15 05:29:49 UTC 2009
----- Jay Hall <jhall at socket.net> wrote:
> Ladies and Gentlemen,
>
> I thought I understood how arrays work in bash, but I have been proven
> wrong. I am reading lines from a file and placing them in an array.
> However, when I am finished, the array has a length of 0.
>
> Following is the code I am using.
>
> #!/usr/local/bin/bash
> COUNTER=0
> cat ./test_file.txt | while read LINE
> do
> echo ${LINE}
> FOO[${COUNTER}]=${LINE}
> COUNTER=`expr ${COUNTER} + 1`
> done
>
> echo ${#FOO[@]}
> echo ${#FOO[*]}
>
>
> And, here is the output.
>
> test_file
> file_size
> 0
> 0
>
> Thanks in advance for any help you can offer.
The right hand side of the pipe is running in its own subshell so
it has its own copy of FOO.
One fix is
#!/usr/local/bin/bash
COUNTER=0
while read LINE
do
echo ${LINE}
FOO[${COUNTER}]=${LINE}
COUNTER=`expr ${COUNTER} + 1`
done < ./test_file.txt
>
>
> Jay
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
More information about the freebsd-questions
mailing list