The Tech Platform
Sep 27, 20213 min
Bash Scripting is a powerful part of system administration and development used at an extreme level. It is used by the System Administrators, Network Engineers, Developers, Scientists, and everyone who use Linux/Unix operating system. They use Bash for system administration, data crunching, web application deployment, automated backups, creating custom scripts for various pages, etc.
Below are the 10 useful and practical tips for writing effective and reliable bash scripts:
This is a recommended practice which is not only applied to shell scripting but all other kinds of programming. Writing comments in a script helps you or some else going through your script understand what the different parts of the script do.
For starters, comments are defined using the # sign.
#TecMint is the best site for all kind of Linux articles
Sometimes bash may continue to execute a script even when a certain command fails, thus affecting the rest of the script (may eventually result in logical errors). Use the line below to exit a script when a command fails:
#let script exit if a command fails
set -o errexit
OR
set -e
Bash may also try to use an undeclared script which could cause a logical error. Therefore use the following line to instruct bash to exit a script when it attempts to use an undeclared variable:
#let script exit if an unsed variable is used
set -o nounset
OR
set -u
Using double quotes while referencing (using a value of a variable) helps to prevent word splitting (regarding whitespace) and unnecessary globbing (recognizing and expanding wildcards).
Check out the example below:
#!/bin/bash
#let script exit if a command fails
set -o errexit
#let script exit if an unsed variable is used
set -o nounset
echo "Names without double quotes"
echo
names="Tecmint FOSSMint Linusay"
for name in $names; do
echo "$name"
done
echo
echo "Names with double quotes"
echo
for name in "$names"; do
echo "$name"
done
exit 0
Save the file and exit, then run it as follows:
$ ./names.sh
Use Double Quotes in Scripts
Except for very small scripts (with a few lines of code), always remember to use functions to modularize your code and make scripts more readable and reusable.
The syntax for writing functions is as follows:
function check_root(){
command1;
command2;
}
OR
check_root(){
command1;
command2;
}
For single line code, use termination characters after each command like this:
check_root(){ command1; command2; }
Note that == is a synonym for =, therefore only use a single = for string comparisons, for instance:
value1=”tecmint.com”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]
Command substitution replaces a command with its output. Use $(command) instead of backquotes `command` for command substitution.
This is recommended even by shellcheck tool (shows warnings and suggestions for shell scripts). For example:
user=`echo “$UID”`
user=$(echo “$UID”)
A static variable doesn’t change; its value can not be altered once it’s defined in a script:
readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”
All bash environment variables are named with uppercase letters, therefore use lowercase letters to name your custom variables to avoid variable name conflicts:
#define custom variables using lowercase and use uppercase for env variables
nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl”
perl “$nikto_file” -h “$1”
If you are writing bash scripts with thousands of lines of code, finding errors may become a nightmare. To easily fix things before executing a script, perform some debugging.
Source: tecmint.com
The Tech Platform