Writing data into existing home folders as part of an installation package

I have been in a few scenarios where we need to deploy a package and put a file into the home folder of each user on the target system. Of course if we are using Casper we can just create a DMG package and use the “fill existing users” option. The below script gives you a way of doing this if you don’t have Casper deploying the package.
We start off by deploying the app / software via the package as normal. In this example we put the file we want to end up in the users home folders in /tmp. We then use a while loop to copy the file into each users home folder (excluding the Shared and Guest directories):

#!/bin/sh
fileName="/tmp/yourfilename"
     # Sets the file name as a variable
counter=`ls /Users | grep -v Shared | grep -v Guest | grep -v .localized | grep -v .DS_Store | grep -c "[A-z 0-9]"`
     # Outputs the number of folders in the /Users directory, excluding the Shared & Guest directories
# Loop start
     while [ $counter -ne 0 ]
          do
               targetFolder=`ls /Users | grep -v Shared | grep -v Guest | grep -v .localized | grep -v .DS_Store | grep "[A-z 0-9]" | head -$counter | tail -1`
                    # Gets the target folder name (there’s probably a better way to do this but it works!)
               cp $fileName /Users/$targetFolder/Desktop/
                    # Copies the file into place
               chown $targetFolder /Users/$targetFolder/Library/Preferences/ByHost/com.apple.QuickTime.$uuid.plist
                    # Set the correct owner on the file
               counter=$(( $counter - 1 ))
                    # Reduces the counter by 1
     done
exit 0