[SunHELP] dirname command pipe failure

Sandwich Maker adh at an.bradford.ma.us
Thu Jun 24 13:41:04 CDT 2004


" -----Original Message-----
" From: adh at an.bradford.ma.us [mailto:adh at an.bradford.ma.us]
" 
" " From: "Jopson, Andy" <Andrew.Jopson at Rolls-Royce.com>
" " 
" " I'm attempting to list a directory so that files can be chosen for
" " processing, rather than entering as arguments. I find that the for command
" " is incredibly SLOW though. Is there a faster way to list the files on
" " numbered lines using another technique?
" " 
" " 	count=0
" " 	for file in ./*
" " 	do
" " 		count=`expr $count + 1`
" " 		files[$count]=`basename $file`
" " 		echo "	$count)	${files[count]}"
" " 	done
" 
" one thing that's slowing it is that expr and basename are both cmds
" that have to be forked and execed.  cpus are fast enough so it doesn't
" mean so much these days, but compare
" 
" #!/usr/bin/ksh
" 
" typeset -i count=0
" for file in ./*
" do
" 	(( count += 1 ))
" 	files[$count]=${file##*/}
" 	print "  $count) ${files[$count]}"
" done
" 
" # end #


" From: "Jopson, Andy" <Andrew.Jopson at Rolls-Royce.com>
" 
" Crikey, it's virtually instantaneous! Before, it was taking nearly a second
" to execute each line in the directory. I didn't realise that the wrong
" choice of commands could have such a large effect on processing times. 

one of the first lessons i learned in shell prog class, many moons
ago!

" The only problem is that count is defined within a function and I can't make
" it available to the main routine by exporting it with the -x argument in
" typeset or the export command, so I need some way of passing it back.

easy peasy.  define count -outside- the function, and it will retain
the value set -inside- the function.  this is one of the neatest
abilities functions have.

such as

typeset -i count=0
function XXX
{
	# function body
	count=${1:-1}
}

then try
print $count
XXX
print $count
XXX 4
print $count
XXX
print $count
XXX 0
print $count
________________________________________________________________________
Andrew Hay                                  the genius nature
internet rambler                            is to see what all have seen
adh at an.bradford.ma.us                       and think what none thought



More information about the SunHELP mailing list