This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group Module 9 Basic Scripting
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group Exam Objective 3.3 Turning Commands into a Script Objective Summary – 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 Text Editors
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group 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 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 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 shebang
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group #! #! 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 Working with Variables
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group 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 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 Working with Conditionals
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group Conditionals if something; then do this fi if something; then do this elif something else; then do that else try this fi # 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 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 if [ -f /tmp/foo ]; then # looks much nicer!
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group Case case ”$GREETING" in hello|hi) echo "hello yourself" ;; goodbye) echo "nice to have met you" echo "I hope to see you again" ;; *) echo "I didn't understand that" esac
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group Loops
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group 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 done
This slide deck is for LPI Academy instructors to use for lectures for LPI Academy courses. ©Copyright Network Development Group 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