Upload
ramasubbu-p
View
1.104
Download
3
Embed Size (px)
DESCRIPTION
PPT
Citation preview
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Shells Scripts
Andrew Nashel
[email protected] of Computer Science
February 6, 2004
COMP 121-401: UNIX Programming
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Course topics
• Shell scripts• Homework
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Shells scripts
Any collection of shell commands can be stored in a file called a shell script. Scripts have variables and flow control statements like other programming languages.
There are two popular classes of shells:C shell (csh) and variants (tcsh)Bourne shell (sh) and variants (bash, ksh)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Invoking scripts
There are two ways to launch scripts:1) Direct interpretationcsh scriptfile [args …]
2) Indirect interpretationThe first line of the file must be#!/bin/csh
and the file must be executable.
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Variables
To set variables:set X [= value]
Variable contents are accessed using ‘$’:echo $PATH
To count the number of variable elements:echo $#Y
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Variables cont’d
To create lists:set Y = (abc 1 123)
To set a list element:set Y[2] = 3
To view a list element:echo $Y[2]
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Command arguments
A shell script to swap files:#! /bin/csh –f
set tmp = $argv[1]
cp $argv[2] $argv[1]
cp $tmp $argv[2]
The number of arguments to a script:$#argv
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
if-then-else
if ( expr ) simple-command
if ( expr ) then
commandlist-1
[else
commandlist-2]
endif
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
if-then-else cont’d
An example:if ($#argv <> 2) then
echo “we need two parameters!“
else
set name1 = $argv[1]
set name2 = $argv[2]
endif
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Loops
while ( expr )
commandlist
end
foreach var ( worddlist )
commandlist
end
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
switch
switch ( str )case string1:
commandlist1breaksw
case string2:commandlist2breaksw
defaultcommandlist
endsw
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
goto (Considered harmful!)
To jump unconditionally:goto label
A label is a line such as:label:
The classic paper on why not to use goto:Go To Statement Considered HarmfulEdsger W. Dijkstra, CACM, March 1968
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
An example script
#! /bin/csh -fforeach name ($argv)
if ( -f $name ) thenecho -n "delete the file '${name}' (y/n/q)?"
elseecho -n "delete the entire dir '${name}' (y/n/q)?
"endifset ans = $<switch ($ans)
case n: continuecase q: exitcase y: rm -r $name; continue
endswend
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Homework
Due Monday:Write a shell script that reads a file and replaces a particular text string with another, all input given interactively.
Hint: Use sed for text replacement.
This is your final graded assignment!
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Homework cont’d
Example:$ ./myscriptFile to read: news.txtSearch text: DukeReplacement text: DookieDookie UniversityDepartment of MathematicsWeekly Calendar…
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Hmmmm.
Okay, shell scripts are useful, but a little boring.