Module 9
Basic Scripting
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Exam Objective
3.3 Turning Commands into a
Objective Summary
Script
–
Basic Text Editing
–
Basic Shell Scripting
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Text Editors
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
A script is a sequence of
commands
•
•
•
•
If you can type it on the command line, it
can be scripted
You can branch based on tests and loop
over collections
This is all available from the command
line, too
Scripts are repeatable and consistent and
free you to do more interesting work
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Editors
•
•
Scripts are text files
LibreOffice will add formatting, making it
unusable
•
nano and vi / vim are popular editors
•
Of the two, nano is far easier to use
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
nano
•
•
•
•
Type as normal, use arrow keys to move
around
Most commands are Control + another
character
Context sensitive commands are at the
bottom of the screen, e.g. ^X to exit, ^W to
find
^G gets you help anywhere
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
shebang
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
#!
•
•
#! is the shebang (hash + bang)
Tells the kernel what shell interpreter to
use to run the script
•
Must be on the first line
•
#!/bin/sh
•
#!/usr/bin/ruby
•
Lets you run the script with ./script no
matter which shell the user has
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Working with Variables
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Variables
•
Temporary storage of data in memory
•
Assigning (no $):
•
–
FOO=“hello”
–
CWD=`pwd`
–
BAR=“Hello $NAME”
Using (need a $):
–
$FOO
–
echo “Hello $NAME”
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Special Variables
•
$1..$9 are the arguments to the script
•
./test.sh hello there # $1=“hello” $2=“there”
•
•
$? is the exit code of the last command to
be run
use “exit 1” to exit your own script with
error code 1
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Working with Conditionals
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Conditionals
if something; then
do this
fi
if something; then
do this
elif something else;
then
# something returns
an exit code. If it is 0,
then “do this” will be
executed up until fi
# alternative syntax,
allows for multiple
tests and a default
option if you want
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
tests
test –f /tmp/foo
# test if file exists
test ! –f /tmp/foo # test if file doesn’t exist
test $A –eq 1
# is $A = 1 (numeric)
test “$B” = “Hello” # string comparison
test $A –lt 10
# $A < 10?
alternatively, [ is the same as test:
if test –f /tmp/foo; then # it works
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Case
case ”$GREETING" in
hello|hi)
echo "hello yourself"
;;
goodbye)
echo "nice to have met you"
echo "I hope to see you again"
;;
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
Loops
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
The for loop
•
Operates over a fixed set of items or a
glob
NAMES=“Alice Bob Charlie”
for N in $NAMES; do
echo “Hello $N”
done
for FILE in *; do
ls –l $FILE
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.
While loops
•
Tests the loop condition each time
while [ ! –f /tmp/foo ]; do
try_to_make_foo # makes /tmp/foo on
success
sleep 1 # wait 1 sec
done
•
Used when the number of loops is
unknown or changes each loop
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses.
©Copyright Network Development Group 2013.