File
Names and Permissions
In the above
example, we have saved the file using gfg.sh name and also
provided execute permission using chmod command. Now, let’s
understand why we have done that.
While
writing bash scripts we should save our file with the .sh extension, so that
the Linux system can execute it. When we first create a file with the .sh
extension, it doesn’t have any execute permission and without the execute
permission the script will not work. So, we should provide execute permission
to it using the chmod command.
The filename
of a bash script can be anything but by convention, it is recommended to use
snake case ( my_bash_script.sh ) or hyphens ( my-bash-script.sh ) for naming a
script file.
Variables
We can use
variables in bash scripting. Below is a sample program to understand the usage
of variables in Bash scripts.
Example
Script:
Name="SATYAJIT GHOSH"
Age=20
echo "The name is $Name and Age is $Age"
Output of
Variables:
The name is SATYAJIT GHOSH and Age is 20
So, here is
have declared two variables Name and another one is Age. These
variables are accessible using $Name and $Age. That means, we can declare a
variable in a bash script using VariableName=Value and can access it
using $VariableName. Here is the terminal shell pictorial depiction
after executing the above script as follows:

There are
two types of variables present within Bash Scripting. Conventionally, If a
variable, is declared inside a function then it is generally a local
variable and if it is declared outside then it is a global
variable. In the case of a bash script, this concept is a little bit
different, here any variable whether it is written inside a function or outside
a function by default is a global variable. If we want to make a local variable
then we need to use the keyword “local”.
Note: It is best practice to always use a
local variable inside a function to avoid any unnecessary confusion.
An example
of the same is given below –
Example
Script:
#!/bin/bash
var1="Apple" #global variable
myfun(){
local var2="Banana" #local variable
var3="Cherry" #global variable
echo "The name of first fruit is $var1"
echo "The name of second fruit is $var2"
}
myfun #calling function
echo "The name of first fruit is $var1"
#trying to access local variable
echo "The name of second fruit is $var2"
echo "The name of third fruit is $var3"
Output of
local and global variables:
The name of first fruit is Apple
The name of second fruit is Banana
The name of first fruit is Apple
The name of second fruit is
The name of third fruit is Cherry
Here in this
above example, var2 is a local variable, so when we are accessing it from the
function it is doing fine but when we are trying to access it outside the
function, it is giving us an empty result in the output.
On the other hand, unlike programming languages, even though var3 is defined inside a function still it is acting as a global variable and it can be accessed outside the function. Below is the terminal shell depiction after executing the script –

Input and
Output
Input & output
are fundamental concepts for shell scripting. A script can take one or more
inputs and can also produce zero or many outputs. It may even produce some
errors. Let’s understand this with an example –
Example
Script:
echo "Enter filename"
read filename
if [ -e $filename ]
then
echo "$filename is exits on the directory"
cat $filename
else
cat > $filename
echo "File created"
fi
Output of
Input & Output:
First time:
Enter filename
geeks.txt
Hello Geek
File created
Second
time:
Enter filename
geeks.txt
geeks.txt is exits on the directory
Hello Geek
So, in this
above example the first time, the script could not find any file with that file
name, and the else block gets executed. It created the file and put some data
into that file. When we run it a second time with the same file name, then it
finds the file. So, is the if block gets executed and that displays the
contents of the file. Reading the file contents is input and on the first
time putting data into the file is considered to be output. Here we have
used > for storing the content in a file. The > notation
is used to redirect stdout to a file. On the other hand, we can use
2> notation to redirect stderr, and &> to
redirect both stdout and stderr.
Below is the
terminal shell pictorial depiction after executing the following script –

Functions
In
programming, A function is a block of code that performs some tasks and it can
be called multiple times for performing tasks. The simplest example of the use
of function in Bash scripting can be given as –
Example
Script:
#!/bin/bash
#It is a function
myFunction () {
echo Hello World from GeeksforGeeks
}
#function call
myFunction
Output of
Functions:
Hello World from GeeksforGeeks
The above
example shows a function that prints something when called.
So, the
basic syntax for writing functions within a Bash Script will be –
Syntax of Functions:
#for defining
function_name(){
commands
.....
}
function_name # for calling
Besides
this, we can also have functions with passing arguments and with return values.
No comments:
Post a Comment