Scripts must react to their situation: skip work if a file exists, stop if an argument is missing. if, [[ ]] and case choose a path based on a test or on a command's success. Use them to check inputs, test whether a service is up or route a start|stop argument. Compare numbers with -lt or (( )), not <, which compares strings inside [[ ]].