SDC files are not something that need to be added every time. They get stored in the .qsf for the project so you might as well add them there. (If you had multiple .sdc files, it would make sense, but that's seldom done). There are tons of settings for a compile, so it's not recommended to add them all as command line options, especially if they're static.
If you are changing something a lot, what I've seen and like is creating a .tcl file rather than a shell file, like so:
project_open top
set_global_assignment -name SDC_FILE file1.sdc
set_global_assignment -name SDC_FILE file2.sdc
qexec "quartus_map ..."
qexec "quartus_merge ..."
project_close
...
You then execute the file at a prompt with quartus_sh -t script.tcl
As you can see, all the commands you normally run at a command prompt like quartus_map and quartus_merge have been moved to be the arguments of qexec. This allows you to enter/modify anything you want for the open project.
Note that everything is stored in the .qsf though. It's not like the project is built from scratch each time, and the .sdc files are in there. I find this more useful if experimenting with settings that change, but you have to remove/modify settings through the script to really take them away. (And most settings are just more intuitive to modify through the GUI. I've worked with some die-hard command line people, but pretty much all agree the Quartus GUI has a lot of advantages that make it worthwhile to open, if just now and then...)