Book Image

Mastering Linux Shell Scripting

By : Andrew Mallett
Book Image

Mastering Linux Shell Scripting

By: Andrew Mallett

Overview of this book

Shell scripting is a quick method to prototype a complex application or a problem by automating tasks when working on Linux-based systems. Using both simple one-line commands and command sequences complex problems can be solved with ease, from text processing to backing up sysadmin tools. In this book, you’ll discover everything you need to know to master shell scripting and make informed choices about the elements you employ. Get to grips with the fundamentals of creating and running a script in normal mode, and in debug mode. Learn about various conditional statements' code snippets, and realize the power of repetition and loops in your shell script. Implement functions and edit files using the Stream Editor, script in Perl, program in Python – as well as complete coverage of other scripting languages to ensure you can choose the best tool for your project.
Table of Contents (16 chapters)
15
Index

Extending if with else


When a script is required to continue regardless of the result of the if condition, it is often necessary to deal with both conditions of the evaluation. What to do when it is true, as well as, false. This is where we can make use of the else keyword. This allows the execution of one block of code when the condition is true and another when the condition is evaluated as false. The pseudo-code for this is shown in the next illustration:

If we consider extending the hello5.sh script that we created earlier, it is easily possible to allow for correct execution regardless of the parameter being present or not. We can recreate this as hello6.sh, as follows:

#!/bin/bash
# Welcome script to display a message to users
# Author: @theurbanpenguin
# Date: 1/1/1971
if [ $# -lt 1 ] ; then
read -p "Enter a name: "
name=$REPLY
else
name=$1
fi
echo "Hello $name"
exit 0

The script sets a named variable now, it helps readability and we can assign the correct value to $name from the input...