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