Book Image

Learn Linux Shell Scripting – Fundamentals of Bash 4.4

By : Sebastiaan Tammer
Book Image

Learn Linux Shell Scripting – Fundamentals of Bash 4.4

By: Sebastiaan Tammer

Overview of this book

Shell scripts allow us to program commands in chains and have the system execute them as a scripted event, just like batch files. This book will start with an overview of Linux and Bash shell scripting, and then quickly deep dive into helping you set up your local environment, before introducing you to tools that are used to write shell scripts. The next set of chapters will focus on helping you understand Linux under the hood and what Bash provides the user. Soon, you will have embarked on your journey along the command line. You will now begin writing actual scripts instead of commands, and will be introduced to practical applications for scripts. The final set of chapters will deep dive into the more advanced topics in shell scripting. These advanced topics will take you from simple scripts to reusable, valuable programs that exist in the real world. The final chapter will leave you with some handy tips and tricks and, as regards the most frequently used commands, a cheat sheet containing the most interesting flags and options will also be provided. After completing this book, you should feel confident about starting your own shell scripting projects, no matter how simple or complex the task previously seemed. We aim to teach you how to script and what to consider, to complement the clear-cut patterns that you can use in your daily scripting challenges.
Table of Contents (24 chapters)
Title Page
About Packt
Contributors
Preface
Free Chapter
1
Introduction
Index

Chapter 9


  1. Why do we need an exit status? So commands can signal to their callers if they succeeded or failed in a simple manner.
  2. What is the difference between exit status, exit code and return code? An exit code and return code refer to the same thing. An exit status is a concept, which is brought to life by the exit/return code.
  1. Which flag do we use with test to test for:
    • An existing directory -d
    • A writable file -w
    • An existing symbolic link -h (or -L)
  2. What is the preferred shorthand syntax for test -d /tmp/? [[ -d /tmp/ ]]. Note that a space after [[ and before ]] is mandatory, or the command will fail!
  3. How can we print debug information in a Bash session? Set the -x flag, either in the shell with set -x or when calling a script with bash -x.
  4. How can we check if a variable has content?
    • if [[ -n ${variable} ]] to check if the variable is non-zero
    • if [[ ! -z ${variable} ]] to check if the variable is not zero
  5. What is the Bash format for grabbing a return code?$?.
  6. Of || and &&, which is the logical AND and which the OR?|| is OR, && is AND.
  7. What is the Bash format for grabbing the number of arguments?$#.
  8. How can we make sure it does not matter from which working directory the user calls the script? By providing a cd $(dirname $0) at the beginning of the script.
  9. How do Bash parameter expansions help us when dealing with user input? It allows us to remove capital letters so we can more easily compare to expected values.