Sed command in shell script

I have a current code working(named subst1) having a user be able to type this line to substitute words using the sed command:

subst1 old-pattern new-pattern filename

Here is my shell script:

#!/bin/bash
# subst1

ARGS=3
E_BADARGS=65

if [ $# -ne "$ARGS" ]
then
  echo "Usage: `basename $0` old-pattern new-pattern filename"
  exit $E_BADARGS
fi

old_pattern=$1
new_pattern=$2

if [ -f "$3" ]
then
    file_name=$3
else
    echo "File \"$3\" does not exist."
    exit $E_BADARGS
fi

mv $file_name $file_name.bak
sed -e "s/$old_pattern/$new_pattern/g" $file_name.bak > $file_name

exit 0

The problem with this script is that it changes the date and creates a bak file. I need to alter this script so that when a user inputs the command line, the script checks if the given old-pattern is in the file and if it is, go ahead and do the substitution. If the old-pattern is not found, the script should do nothing. Any help would be appreciated!

So before your sed, you need to test if the string exists in the file, something like

grep -q "String" <filename> >& /dev/null

if ($status == 0) then
echo "String exist, do something"
else
echo "do something else or exit" >> <filename>
endif

syntax neeeds clearing up bu the skeletal is there & a more elegant 1 line job (.e.e. perl) may be around too