Upload
eliezer-moraes
View
221
Download
2
Embed Size (px)
Citation preview
Chapter 3Writing and Executing a shell script
Advanced Linux administration using Fedora v. 9
Lecturer: Mr. Kao Sereyrath, MScIT (SMU, India)Director of Technology and Consulting Service (DCD Organization)ICT Manager (CHC Microfinance Limited)
Contents
Advantage of using shell script1
3
4
5
2 Creating and executing shell script
Learn about variable
Learn about operator
if and case statement
6 for, while and until statement
7 Create function in shell script
Advantage of using shell script Hundreds of commands included with Fedora are actually
shell scripts. For example startx command.
Shell script can save your time and typing, if you routinely use the same command lines multiple times every day.
A shell program can be smaller in size than a compiled program.
The process of creating and testing shell scripts is also generally simpler and faster than the development process.
You can learn more with “Sams Teach Yourself Shell Programming in 24 Hours”
Creating and Executing shell script
To create shell script : You can use vi command. Because it won't wrap text.
Or you can use nano -w to disable line wrap
For example, to create myenv filevi /etc/myenv
To execute shell script : First you need to set file permission
chmod +x myenv
Creating and Executing shell script (Cont.)
To execute myenv file in /etc directory ./myenv
To enable shell script as your Linux command, first you need to create bin directory in user home directory. Then put shell script file into that directory.
mkdir binmv /etc/myenv binmyenv
Learn about variable
There are 3 types of variable:– Environment variables: Part of the system
environment, you can use and modify them in your shell program. For example PATH variable.
– Built-in variables: Unlike environment variables, you cannot modify them. For example $#, $0
– User variable: Defined by you when you write a shell script.
Learn about variable (Cont.)
Positional parameter
if [ $# -eq 0 ]thenecho "Tell me your name please"elseecho "Welcome "$1fi
$# is a positional parameter and $1 is to get first parameter. You can use $2 to get second parameter.
Learn about variable (Cont.)
Using single quote to escape variable
var="Welcome to Linux"echo 'The value of $var is '$var
The output is:
The value of $var is Welcome to Linux
Learn about variable (Cont.)
Using backtick ( ` ) to execute Linux command
ls -l >> myfile.txtmycount=`wc -l myfile.txt`echo "File size: "$mycount
The output is:
File size: 33 myfile.txt
Learn about Operator
Comparison operator
= To compare whether two strings are equal!= To compare whether two strings are not equal-n To evaluate whether the string length is greater than zero-z To evaluate whether the string length is equal to zero
#String comparisonstring1="abc"string2="Abc"if [ $string1 = $string2 ]then echo "string1 equal to string2"else echo "string1 not equal to string2"fi
Learn about Operator (Cont.)#String comparisonstring1="abc"string2="Abc"if [ $string1 != $string2 ]; then echo "string1 not equal to string2"else echo "string1 equal to string2"fi
if [ $string1 ]; then echo “string1 is not empty”else echo “string1 is empty”fi
Learn about Operator (Cont.)if [ -n $string2 ]; then echo “string2 has a length greater than zero”else echo “string2 has length equal to zero”fi
if [ -z $string1 ]; then echo “string1 has a length equal to zero”else echo “string1 has a length greater than zero”fi
Learn about Operator (Cont.)
Number comparison
-eq To compare Equal-ge To compare Greater than or equal to -le To compare Less than or equal to-ne To compare Not equal-gt To compare Greater than-lt To compare Less than
if [ $number1 -gt $number2 ]; then echo “number1 is greater than number2”else echo “number1 is not greater than number2”fi
Learn about Operator (Cont.)
File operator
-d Check if it is a directory
-f Check if it is a file
-r Check if the file has Read permission
-w Check if the file has Write permission
-x Check if the file has Execute permission
-s Check if file exist and has length greater than zero
Learn about Operator (Cont.)filename="/root/bin/myfile.txt"if [ -f $filename ]; thenecho "Yes $filename is a file"elseecho "No $filename is not a file"fiif [ -x $filename ]; thenecho "$filename has Execute permission"elseecho "$filename has no Execute permission"fiif [ -d "/root/bin/dir1" ]; thenecho "It is a directory"elseecho "No it is not a directory"fi
Learn about Operator (Cont.)
Logical operator
! To negate logical expression-a Logical AND-o Logical OR
if [ -x $filename1 -a -x $filename2 ]; thenecho "$filename1 and $filename2 is executable"elseecho "$filename1 and $filename2 is not executable"fiif [ ! -w $file1 ]; then echo “$file1 is not writable”else echo “$file1 is writable”fi
if and case statement
if statement syntaxif [ expression ]; then Statementselif [ expression ]; then Statementselse Statementsfi
Example:if [ $var = “Yes” ]; then echo “Value is Yes”elif [ $var = “No” ]; then echo “Value is No”else echo “Invalid value”fi
if and case statement (Cont.)
case statement syntaxcase str in str1 | str2) Statements;; str3 | str4) Statements;; *) Statements;;esac
Example:case $1 in001 |01 | 1) echo "January";;02 | 2) echo "February";;3) echo "March";;*) echo "Incorrect supplied value";;esac
for, while and until statement
Example1: for statement
for filename in *do cp $filename backup/$filename if [ $? -ne 0 ]; then echo “copy for $filename failed” fidone
Above example is used to copy all files from current directory to backup directory. if [ $? -ne 0 ] statement is used to check status of execution.
for, while and until statement (Cont.)
Example2: for statement
echo "You have passed following parameter:"i=1for parlist in $@doecho $i" "$parlisti=`expr $i + 1`done
If you type myenv domain1 domain2. The result is:
You have passed following parameter:1 domain12 domain2
for, while and until statement (Cont.)
Example: while statement
loopcount=0while [ $loopcount -le 4 ]douseradd "user"$loopcountloopcount=`expr $loopcount + 1`done
Above statement is used to create user0, user1, user2, user3,
user4.
for, while and until statement (Cont.)
Example: until statement
loopcount=0until [ $loopcount -ge 4 ]doecho $loopcountloopcount=`expr $loopcount + 1`done
Above statement is used to output 0, 1, 2, 3 to display.
Create function in shell scriptYou can create function by using below example.myfunc(){case $1 in1) echo "January";;2) echo "February";;3) echo "March";;4) echo "April";;5) echo "May";;6) echo "June";;7) echo "July";;8) echo "August";;9) echo "September";;10) echo "October";;11) echo "November";;12) echo "December";;*) echo "Invalid input";;esac }
Calling functionmyfunc 3
Output isMarch