Help on bash script?
Benson Wong
tummytech at gmail.com
Fri Aug 12 20:38:35 GMT 2005
I prefer:
for COREFILE in `find / -type f -name core -print`
do
...
done
Wouldn't that accomplish the same thing?
On 8/12/05, Ian Smith <smithi at nimnet.asn.au> wrote:
> On Fri 12 Aug 2005 09:33:54 +0800 Xu Qiang <Qiang.Xu at fujixerox.com> wrote:
>
> > find / -type f -name core -print | while read COREFILE ; do
> > NCOREFILES=$[ $NCOREFILES + 1 ] # a bit strange - xq
> > echo $NCOREFILES # xq
> >
> > NEWNAME="${HOSTNAME}esscore${NCOREFILES}_${TIMESTAMP}"
> > # record mapping so people can go back and figure out
> > # where they came from
> > echo -e $NEWNAME " was " `ls -l $COREFILE` >> $SAVE_DIR/$CORELOG
> > mv $COREFILE $SAVE_DIR/$NEWNAME
> >
> > echo "There are $NCOREFILES core files." # xq
> > done
> >
> > fi
> >
> > # What confused me most is the value $NCOREFILES outside
> > # the do-while loop (but still in this function) reverted
> > # back to its initial value, which seems contradictory to
> > # our concept of local variables. - xq
> > #echo $NCOREFILES
>
> It's been pointed out that the find piped to while runs in a subshell,
> and that changes to variables within aren't seen by its parent, but one
> way around this is to avoid using a pipe, thus a subshell, for instance:
>
> find / -type f -name "*.core" -print >tempfile
> while read COREFILE; do
> [.. stuff ..]
> NCOREFILES=$(($NCOREFILES + 1))
> done <tempfile
> echo $NCOREFILES
>
> I use sh, not bash, but suspect that this should work in bash too.
>
> cheers, Ian
>
> _______________________________________________
> 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"
>
--
blog: http://www.mostlygeek.com
More information about the freebsd-questions
mailing list