Title: Introduction to Shell Script Programming
1Guide To UNIX Using Linux Third Edition
- Chapter 6
- Introduction to Shell Script Programming
2Objectives
- Understand the program development cycle
- Compare UNIX/Linux shells for creating scripts
- Use shell variables, operators, and wildcard
characters
3Objectives (continued)
- Use shell logic structures
- Employ shell scripting to create a menu
- Use commands to help debug shell scripts
4Objectives (continued)
- Explain ways to customize your personal
environment - Use the trap command
- Develop a menu-based application
5Previewing the Application
- Shell scripts can be used to customize your
environment - Will develop a simulated employee information
system using shell scripts - Will gain experience with shell variables, shell
script operators, and logic structures
6The Program Development Cycle
- The program development cycle is the process of
developing an application - First step is to create program specifications
- Second step is to create the program design
- Third step is developing the code, which is
written, tested, and debugged
7The Program Development Cycle
8Using High-Level Languages
- High-level languages are computer languages that
use English-like expressions - Examples are COBOL, C, C
- High-level language statements are stored in a
source file, which programmers create using an
editor
9Using High-Level Languages (continued)
- High-level source files must be converted into a
low-level machine language file - A compiler is a program that converts source
files into executable machine-language files - If a source file contains syntax errors, it
cannot be converted into an executable file - A programmer must correct these errors before the
program can be run
10Using UNIX/Linux Shell Scripts
- Unlike high-level language programs, shell
scripts do not have to be converted into machine
language - The UNIX/Linux shell acts as an interpreter when
reading script files - Interpreters read statements in script files and
immediately translate them into executable
instructions and run them
11Using UNIX/Linux Shell Scripts(continued)
- After creating shell script, the OS is instructed
that the file is an executable shell script via
the chmod command - Script files can be run in several ways
- Set the path variable and type the script name at
the command prompt - Type ./filename if script is in current directory
- Type the script name preceded by the full path
12Prototyping an Application
- A prototype is a running model of your
application - Less detail, less design time than a full
application - Shows potential without full programming effort
- Shell scripts can be used to prototype
applications that will later be moved to compiled
languages
13Using Comments
- Comments are important!
- Provide useful documentation to both the
programmer and to others who need to understand
or debug the code - To use, start comment line with a
14The Programming Shell
All Linux versions use the Bash shell as the
default
15Variables
- Variables are symbolic names that represent
values stored in memory - Three types of variables
- Configuration variables store information about
the setup of the OS - Environment variables hold information about your
login session - Shell variables are created at the command prompt
or in shell scripts and are used to temporarily
store information
16Environment and Configuration Variables
- Environment and configuration variables can be
used to set up and personalize your sessions - The printenv command shows current environment
and configuration variables
17Environment and Configuration Variables
(continued)
Use the printenv variable to see a list of
environment variables
18Environment and Configuration Variables
(continued)
19Environment and Configuration Variables
(continued)
20Environment and Configuration Variables
(continued)
21Environment and Configuration Variables
(continued)
22Shell Variables
- Variables that you can define and manipulate for
use with program commands in a shell - Observe basic guidelines for handling and naming
shell variables
23Shell Operators
- Bash shell operators are in four groups
- Defining
- Evaluating
- Arithmetic
- Redirection
24Defining Operators
- Used to assign a value to a variable
- Most common is (equal sign)
- Use quotation marks with strings
- Backquote says execute the command inside the
backquotes and store the result in the variable
25Evaluating Operators
- Used for determining the contents of a variable
- echo variablename will show the value of
variablename - Double quotes can be used, but not single quotes
26Arithmetic Operators
27Arithmetic Operators (continued)
- Regular mathematical precedence rules apply to
arithmetic operators
To store arithmetic values in a variable, use let
statement
28Redirection Operators
- The gt redirection operator overwrites an existing
file - -o noclobber option of set command will prevent
overwriting
29Exporting Shell Variables to the Environment
- Shell scripts cannot automatically access
variables created and assigned - On the command line
- By other scripts
- Make variables global in your environment by
using the export command
30Modifying the PATH Variable
- PATH variable controls where your shell will look
for shell scripts - You can add directories to your PATH
- Special directories for scripts
- Your current working directory
31More About Wildcard Characters
- Shell scripts often use wildcard characters
- Wildcard characters are called glob characters
and are a part of glob patterns - Glob patterns are intended to match filenames and
words - Question mark (?) matches one character
- Asterisk () matches zero or more characters
- chars defines a class of characters, the glob
pattern matches any character in the class
32Shell Logic Structures
- Four basic logic structures needed for program
development are - Sequential logic
- Decision logic
- Looping logic
- Case logic
33Sequential Logic
- Commands are executed in the order in which they
appear in the script or program - The only break in this sequence comes when a
branch instruction changes the flow of execution
by redirecting to another location in the script
or program - Used for simple, straightforward command sequences
34Decision Logic
- Enables your script or program to execute a
statement or series of statements only if a
certain condition exists - In many cases, the condition depends upon the
result of a command or on a comparison - The if statement is the primary decision-making
control structure in this type of logic
35Looping Logic
- A control structure repeats until some condition
exists or some action occurs - Two common looping mechanisms
- for loops cycle through a range of values until
the last in a set of values is reached - The while loop cycles as long as a particular
condition exists
36Looping Logic (continued)
The for loop repeats for however many values
there are in the specified set of values
37Looping Logic (continued)
- Program control structures can be entered from
the command line - Wildcard characters can be used in loops
- The while loop is set up to test repeatedly for a
matching condition - The while loop is used when code must be
repeatedly executed an undetermined number of
times
38Case Logic
- The case logic structure simplifies the selection
from a list of choices - It allows the script to perform one of many
actions, depending on the value of a variable - Two semicolons () terminate the actions taken
after the case matches what is being tested
39Using Shell Scripting to Create a Menu
- Often useful to create a menu that branches to
specific shell scripts - The tput command is useful when creating menus
- Can initialize the terminal display to place text
and prompts in specific locations and respond to
the user
40Debugging a Shell Script
- A shell script will not execute if there is an
error in one or more commands - Running a shell script using sh enables quick
debugging of problems - sh -v option displays lines of code in the script
as they are read by the interpreter - sh -x option displays the command and its
arguments line by line as they are run
41Customizing YourPersonal Environment
- When programming and shell scripting, customizing
your environment by modifying the initial
settings in the login scripts provides many
benefits - Login scripts run just after logging in
- Setting up personal bin directories and modify
editor defaults are common customizations
42Customizing Your Personal Environment (continued)
- An alias is a name that represents another
command - The .bashrc file in your home directory is used
to establish customizations that take effect at
each login - The .bashrc script is executed each time a shell
is generated, such as when shell scripts are run
43The trap Command
- The trap command causes a shell program to
automatically remove temporary files created when
shell scripts run - Programmers often set up a subdirectory to store
temporary files, and when a script file exits,
trap removes the files - Having files removed from a temporary directory
like this is considered good housekeeping
44Putting It All Together in an Application
- Applications require you to
- Assign and manage variables
- Use shell operators
- Employ shell logic structures
- Use additional wildcard characters
- Use tput for managing screen initialization
- Use trap to clean up temporary files
- Will use these skills to build a shell script
application in Hands-on Project
45Chapter Summary
- A high-level language uses English-like
expressions and must be converted into a
low-level language before being executed - The shell interprets shell scripts
- Linux shells are derived from the UNIX Bourne,
Korn and C shells, and bash is the default
46Chapter Summary (continued)
- UNIX/Linux uses three types of variables
configuration, environment, and shell - Shell operators include defining, evaluating,
arithmetic, and redirection - Wildcard characters are used in shell scripts
- The logic structures supported are sequential,
decision, looping and case
47Chapter Summary (continued)
- The tput command manages cursor placement on the
screen - Programmers and system administrators often
customize the .bashrc file - Aliases simplify common commands can be entered
into the .bashrc - Use the trap command to remove temporary files
after the script exits