Request for Recommendations

Hello Guru's,

I created this shell script to copy over the files from one location to other location and generating a list of files to process them through ETL tool. Could you please review the code and tell me if you have any recommendations or changes for my code or any thing wrong in my code. Appreciate your time and help, Thank you!

#!/bin/sh
#set -x
uploaddir="/u01/app/informatica/dev3/sample/GPMDir/UploadDir"
processdir="/u01/app/informatica/dev3/sample/GPMDir/ProcessDir"
datetime=`date +%Y%m%d`
logdir="$processdir/GPMLogFile_$datetime.log"

echo "<---------------Start Copying & Moving GPM Files To Process Directory-------------->" > $logdir

cat /dev/null >$processdir/dummy.txt
echo "Creating A Dummy File In The Process Directory" >> $logdir

rm -rf $processdir/*.list
echo "Removed All The List Files Generated Earlier In The Process Directory" >> $logdir

cd $uploaddir
echo "Current Directory Path Is:" >> $logdir
echo "`pwd`" >> $logdir

if [ -f "$uploaddir"/"GPM_"*".csv" ];then
	cp $uploaddir/GPM_*.csv $processdir
          if [ $? -eq 0 ] ; then
          echo "Master GPM Files Were Copied Successfully Into Process Directory" >> $logdir
          else
	  echo "Error In Copying Master GPM Files Into Process Directory" >> $logdir
          fi
else 
	echo  "Master GPM Files Doesn't Exists In Upload Directory, Hence Cann't Copy Over The Files Into The Process Directory" >> $logdir
fi

if [ -f "$uploaddir"/*"_FI.csv" ]; then
		for i in `ls -rt *_FI.csv`
		do
			echo $processdir/$i>> $processdir/GPM_FI.list
			cp $uploaddir/$i $processdir
			#mv $uploaddir/$i $processdir
		done
	echo "FI Files Exists, Generated The FI File List & Copied Over The FI Files Successfully Into The Process Directory" >> $logdir
else 
	echo "FI Files Doesn't Exists,Creating Dummy File List" >> $logdir
	ls -rt $processdir/dummy.txt > $processdir/GPM_FI.list
fi

Looks very nice. Here's a few tips:

Instead of having every line redirected to $logdir, you can just do this at the top of the script (instead of defining logdir):

exec - >"$processdir/GPMLogFile_$datetime.log" 2>&1

This will also redirect STDERR to the same file.

Instead of

         cp $uploaddir/GPM_*.csv $processdir
          if [ $? -eq 0 ] ; then

You can just do:

         if $uploaddir/GPM_*.csv $processdir
         then

Instead of

echo "Current Directory Path Is:" >> $logdir
echo "`pwd`" >> $logdir

You can do:

echo -n "Current Directory Path Is:" >> $logdir
pwd >>$logdir

(Note, you don't need to redirect if you followed my first tip).
Remove the -n if you want these lines to be separate in your output.