16
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Shells Scripts Andrew Nashel [email protected] Department of Computer Science February 6, 2004 COMP 121-401: UNIX Programming

Shell Script

Embed Size (px)

DESCRIPTION

PPT

Citation preview

Page 1: Shell Script

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

Page 2: Shell Script

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Course topics

• Shell scripts• Homework

Page 3: Shell Script

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)

Page 4: Shell Script

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

Page 5: Shell Script

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

Page 6: Shell Script

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

Page 7: Shell Script

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

Page 8: Shell Script

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

Page 9: Shell Script

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

Page 10: Shell Script

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Loops

while ( expr )

commandlist

end

foreach var ( worddlist )

commandlist

end

C Shell

Page 11: Shell Script

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

switch

switch ( str )case string1:

commandlist1breaksw

case string2:commandlist2breaksw

defaultcommandlist

endsw

C Shell

Page 12: Shell Script

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

Page 13: Shell Script

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

Page 14: Shell Script

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!

Page 15: Shell Script

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…

Page 16: Shell Script

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Hmmmm.

Okay, shell scripts are useful, but a little boring.