scripting problem

Wayne Betts wbetts at bnl.gov
Mon Jan 28 21:51:24 UTC 2008


How about a construction like one of these two instead:

#!/bin/bash
/bin/ls -d1 /home/user/* > ls.out
cat ls.out | while read NAMEDIR
do
echo $NAMEDIR
done

OR

#!/bin/bash
/bin/ls -d1 /home/user/* > ls.out
while read NAMEDIR
do
echo $NAMEDIR
done < ls.out

BTW, the Internal Field Separator is set by the "IFS" environment 
variable.  For instance, "IFS=:" is very useful for parsing passwd or 
shadow files.

-Wayne

Steven Buehler wrote:
> I am hoping that someone here can help me with this.  I am running a little
> script that backs up some directories for me.  Below is snippet that gets me
> into trouble.
> ---------------------
> #!/bin/sh
> DIRSTOBACKUP=`/bin/ls -d1 /home/user/*`
> for NAMEDIR in ${DIRSTOBACKUP[@]}
> do
> echo $NAMEDIR
> done
> ---------------------
>
> The problem is that some of the directories have spaces in the names.  When
> running the for loop, it will take the new NAMEDIR at the space.  So "Red
> Hat" would end up listing as 2 directories, "Red" and "Hat".  Any way around
> this?
>
> Thanks
> Steve
>
>   




More information about the redhat-list mailing list