Sanitizing user input and for repeatable results
One of the best practices for scripts (or programs, for that matter) is controlling user input, not only for security, but for controlling functionality in a way that input provides predictable results. For example, imagine a user who enters a number instead of a string. Did you check it? Will it cause your script to exit prematurely? Or will an unforeseen event occur such as the user entering rm -rf /*
instead of a valid user name?
In any case, limiting program user input is also useful to you as the author because it can limit paths users take and reduce undefined behavior or bugs. Therefore, if quality assurance is important, test cases and input/output validation can be reduced.
Getting ready
This recipe might be introducing some readers to a concept they would like to avoid: software engineering. It's true, you are probably writing scripts to quickly get a task completed, but if your script is to be used by other people (or for a long time...