Append a note to one of three files based on user choice
A couple of points:


You determine the date outside your loop, then loop forever. Every note you make after the first one is going to have the same date stamp.

A better approach would be to collect the date stamp just as you are writing to the file:

datestamp=$(...)
echo "$datestamp: $note" &gt;&gt; ...

When shells were originally written, almost everything was a program. The if statement takes an executable as its conditional element. (If you look, you will find a program named [ in /bin so that if [ ... will work.)

There is a program named true and a program named false. You can run them, and they don't do anything except set their exit codes to appropriate values.

You don't need to write while [ true ]. Instead, just write while true. This is important because while false will do something different from while [ false ]. You may be surprised ...
As @Vogel612 points out, you have duplicated code. I think you should keep the user feedback close to the user entry, so your checking should happen before typing the note. You can use another variable to hold the destination file path:

read -p "What is this note for?
Work
School
Shopping 
&gt; " topic
destfile=''
case $topic in
    "Work"     ) destfile="$wsave" ;;
    "School"   ) destfile="$scsave" ;;
    "Shopping" ) destfile="$shsave" ;;
    * ) echo "Error: Selection was not on list, try again.\n" ;;
esac

if [ "$destfile" ]; then 
    read -p "\nNote\n&gt; " note
    echo "$date: $note" &gt;&gt; "$destfile"
    echo "Note saved to $destfile"
fi