First I'll say that I've been using Linux for over 15 years and making scripts still gives me fits. I suppose that I just don't "get it" or something, but I've written backup scripts in bash several times.
Your specifications indicate that your backups should be contained in archive files, just like in WinZip archive files.
You have done what catkin asked. Now what does it mean? If you look at the output of the ls -l /bin/sh command you can see that it has an arrow next to /bin/sh and that arrow points to dash. Now if you look in the listing of /etc/shells you can see that /bin/dash is one of the items listed. That's good. The /etc/shells file simply contains a list of the allowed command line interpreters. If you performed an ls -l /bin/dash it would look like a regular file, which is to say that it would not have an arrow pointing to anything else.
So the first line of your bash script looks like a comment and it tells Linux which command line interpreter to use when executing your script. The first line of your bash script should look like this.
You should decide where you want to put the archives. I recommend putting them on a different disk drive. This disk drive would have to be mounted. Linux mounts disk drives on directories. Windows can do this as well but normally Windows makes disk drives (disk drive partitions) look like separate devices. This is not the case in Linux. Mounted disk drive partitions just look like any other directory. Before you can put files onto a disk partition you have to mount it somewhere. You can do this using the mount command.
Example: a normal user wants to mount disk partition /dev/sdb3 on /mnt/sdb3.
sudo mount /dev/sdb3 /mnt/sdb3
Note that the directory /mnt/sdb3 must exist prior to entering this command.
As catkin said we should take baby steps so get comfortable with what I have written and then come back.