External programs are often used within shell scripts; there are a few
builtin commands (echo
, which
, and test
are commonly builtin), but many useful commands are actually Unix utilities,
such as tr
, grep
, expr
and cut
.
The backtick (`)is also often associated with external commands.
Because of this, we will discuss the backtick first.
The backtick is used to indicate that the enclosed text is to be executed
as a command. This is quite simple to understand. First, use an
interactive shell to read your full name from /etc/passwd
:
$ grep "^${USER}:" /etc/passwd | cut -d: -f5 Steve Parker
Now we will grab this output into a variable which we can manipulate more easily:
$ MYNAME=`grep "^${USER}:" /etc/passwd | cut -d: -f5` $ echo $MYNAME Steve Parker
So we see that the backtick simply catches the standard output from any command or set of commands we choose to run. It can also improve performance if you want to run a slow command or set of commands and parse various bits of its output:
#!/bin/sh find / -name "*.html" -print | grep "/index.html$" find / -name "*.html" -print | grep "/contents.html$"
This code could take a long time to run, and we are doing it twice!
A better solution is:
#!/bin/sh HTML_FILES=`find / -name "*.html" -print` echo "$HTML_FILES" | grep "/index.html$" echo "$HTML_FILES" | grep "/contents.html$"Note: the quotes around
$HTML_FILES
are essential to preserve the newlines between each file listed. Otherwise, grep
will see one huge long line of text, and not one line per file.
This way, we are only running the slow find
once, roughly
halving the execution time of the script.
We discuss specific examples further in the Hints and Tips section of this tutorial.
My Shell Scripting books, available in Paperback and eBook formats. This tutorial is more of a general introduction to Shell Scripting, the longer Shell Scripting: Expert Recipes for Linux, Bash and more book covers every aspect of Bash in detail.
![]() Shell Scripting Tutorial is this tutorial, in 88-page Paperback and eBook formats. Convenient to read on the go, and in paperback format good to keep by your desk as an ever-present companion. Also available in PDF form from Gumroad:Get this tutorial as a PDF | ![]() Shell Scripting: Expert Recipes for Linux, Bash and more is my 564-page book on Shell Scripting. The first half covers all of the features of the shell in every detail; the second half has real-world shell scripts, organised by topic, along with detailed discussion of each script. |