Bash Script
To create a bash script, you can simply create a text file with your desired name with .sh extension. This extension tells the user that this file is a bash script. Before you start creating your bash script, you need to let the system know that this is a bash script. This can be done by using the shebang construct. For example,
#!/bin/bashThis should be the first line in your script.
Make the Script Executable
After you finish formatting your script, you need to save it. Once it’s saved, you need to make it executable to be able to run it. This can be done using the chmod command which is used for the file permission. To make the script executable, you can use the following command:
chmod +x filename+x is used to allow the user to run the script.
For example, to make the file test.sh executable, type the following.
chmod +x test.shRun Bash Scripts
After you make your script, you can run it. To run the script, you need to:
- 
Open a terminal. 
- 
Type ./followed by the filename.For example, to run test.shscript, type the following.
./test.sh
Comments
When writing Bash scripts, it’s always a good practice to make your code as clean and understandable. Comments are used to improve the readability of your code. A comment is a human-readable explanation or annotation that’s written in the shell script.
Hash mark (#) is used to write comments in bash scripts. Bash ignores everything written on the line after the #. The only exception to this rule is when the first line of the script starts with the #! characters (shebang).
The Set Builtin
The set command is used to modify the operating parameters of the Shell environment, which means that the environment can be customized.
Different parameters can be used with the set command, and you can find on this page  official manual for the complete list. In this tutorial, the three most commonly used Set Builtin’s will be discussed.
set -u
When a script is being executed, by default, Bash will ignore the variable that doesn’t exist. Using set -u will report an error instead of continuing execution if the script contains a variable that’s used and not defined.
Example:
#!/bin/bash
set -u
echo "Example of set -u"
echo $a
echo "End"Output:
Example of set -u
./test2.sh: line 5: a: unbound variableIn this example, an error unbound variable was reported because the variable a isn’t defined.
set -x
By default, after the script is executed, it only displays the results. If multiple commands are executed continuously, the results will be outputted continuously. Sometimes, you may wonder which command produces this piece of the result. Use set -x to output the executed command line before its execution result.
Example:
#!/bin/bash
set -x
echo "Example of set -x"
echo "This is the second command"
echo "End"Output:
+ echo 'Example of set -x'
Example of set -x
+ echo 'This is the second command'
This is the second command
+ echo End
EndVariables
You can define variables in bash scripts. Variables can be defined as follows 
var_name=value
For example, to define a variable named HPC with Discovery as it’s value, you can add the following statement to your script.
HPC="Discovery"To access the value stored in a variable, prefix its name with the dollar sign ($). For example, to print the value of HPC variable, enter the following.
echo $HPCThis prints the value HPC as follows.
DiscoveryConditional Statements
Conditional statements can be used in bash scripts like other programming languages. There are different forms of conditional statements in bash scripts.
if condition
Syntax
if [ condition ]
then
  commands
fiFor example, the following script prints The price is cheap if the value of the PRICE variable is less than 17.
#!/bin/bash
PRICE=15
if [ $PRICE -lt 17  ]
then
  echo "The price is cheap"
fiif else condition
Syntax
if [ condition ]
then
  commands
else
  commands
fiThe previous example can be extended to print Price is expensive if the value of the PRICE variable isn’t less than 17. It can be written as follows.
#!/bin/bash
PRICE=15
if [ $PRICE -lt 17  ]
then
  echo "The price is cheap"
else
  echo "The price is expensive"
fiYou may need to use more than a condition, you can use the following operators to connect the conditions.
- 
-awhich representsandoperator.
- 
-owhich representsoroperator.
Bash script uses different logical operators in the conditions. The following table shows some of them.
| Operator | Description | 
| 
 | checks if a numeric value less than or equal another numeric value(⇐) | 
| 
 | checks if a numeric value less than another numeric value (<) | 
| 
 | checks if a numeric value greater than another numeric value (>) | 
| 
 | checks if a numeric value greater than or equal another numeric value (>=) | 
| 
 | checks if two values are equal | 
| 
 | checks if two values aren’t equal | 
Loops
Loops are useful in bash scripts. Loops allow users to take a series of commands and keep re-running them until a particular situation is reached. They’re useful for automating repetitive tasks.
for loop
It says for each of the items in a given list, perform the given set of commands. It has the following syntax.
for var in <list>
do
<commands>
doneExample:
#!/bin/bash
# Basic for loop
courses="OS PL Algorithms"
for course in $courses
do
echo $course
doneOutput:
OS
PL
AlgorithmsYou can use ranges instead of specifying all elements of the list. For example, to print the even numbers between 1 and 20, you can use the following script.
#!/bin/bash
for i in {1..20}
do
   if [ $((i % 2)) -eq 0 ]
   then
      echo "$i is even"
   fi
doneOutput:
2 is even
4 is even
6 is even
8 is even
10 is even
12 is even
14 is even
16 is even
18 is even
20 is even