Puzzling discrepancy in bash variables

2008-10-15 Thread RMMM

I'm trying to create a bash function for use in auto completion, but
I've run into bash behavior I don't understand. All I want to do is
generate a list of the file names from a certain directory. I have a line

filenames=$(for file in `ls -1 mydir`; do echo -n "${file} " ; done )

This seems to produce the correct list:
bash> echo $filenames
resources doc src 
bash> 

However, it doesn't work with the compgen function:
bash> compgen -W "${filenames}" -- s
bash>



On the other hand, if I create the same variable manually, it works:
bash> filenames1="resources doc src "
bash> compgen -W "${filenames1}" -- s
src
bash>

As far as I can tell, the variables $filenames and $filenames1 have the same
values. Yet, they 
behave differently when used in an argument. Is there some hidden aspect to
a bash variable 
that I'm not seeing?



-- 
View this message in context: 
http://www.nabble.com/Puzzling-discrepancy-in-bash-variables-tp20003296p20003296.html
Sent from the Gnu - Bash mailing list archive at Nabble.com.





Re: Puzzling discrepancy in bash variables

2008-10-15 Thread RMMM


RMMM wrote:
> 
> As far as I can tell, the variables $filenames and $filenames1 have the
> same values. Yet, they 
> behave differently when used in an argument. Is there some hidden aspect
> to a bash variable 
> that I'm not seeing?
> 

I just figured out the problem. I was running this in a shell with
dircolors. Arggg!

doing 
filenames=`ls --color=no mydir`
is all I needed to do. Well ... maybe there's some better way of getting the
filenames
that's immune to any invisible codes.




-- 
View this message in context: 
http://www.nabble.com/Puzzling-discrepancy-in-bash-variables-tp20003296p20003300.html
Sent from the Gnu - Bash mailing list archive at Nabble.com.