A shell is a set of programs built for UNIX or LINUX operating system. It is used for giving commands, starting processes, control jobs, redirect input and output, and other such things which can be done on a modern computer. A script written for the shell, or command line interpreter, of an operating system (generally UNIX or LINUX) is called as a shell script.
A shell script is more often considered to be a simple domain-specific programming language. It is basically used for manipulation of the file, executing some programs, or printing some text. Although there are various graphical interfaces available for Linux, the shell is still considered to be a very neat tool.
It has a large collection of commands and is a very effective for system administration purpose. A shell script can provide a convenient variation of a system command where special environment settings, command options, or post-processing is applied automatically. You are even allowed to enter several commands manually at a command line interface, so that they can be executed automatically, rather than waiting for a user to trigger each stage of the sequence.
Shell programming is not just a collection of commands but a really good programming language which can automate a lot of tasks with it. This makes it very useful for simple prototyping and can be used for relatively simple operations where efficiency is of less priority.