Shells and Shell Scripts - PowerPoint PPT Presentation

About This Presentation
Title:

Shells and Shell Scripts

Description:

Shells and Shell Scripts COMP 444/5201 Revision 1.3 January 25, 2005 Content Shells and Shell Scripts tcsh, enhanced C-Shell bash, Bourne-Again Shell Shell Commands ... – PowerPoint PPT presentation

Number of Views:315
Avg rating:3.0/5.0
Slides: 35
Provided by: usersEncs
Category:
Tags: script | scripts | shell | shells

less

Transcript and Presenter's Notes

Title: Shells and Shell Scripts


1
Shells and Shell Scripts
  • COMP 444/5201
  • Revision 1.3
  • January 25, 2005

2
Content
  • Shells and Shell Scripts
  • tcsh, enhanced C-Shell
  • bash, Bourne-Again Shell

3
Shell Commands
  • Shell commands are interpreted directly by the
    shell you specify.
  • The commands are similar to the statement in some
    programming languages, such as C.
  • Popular shells include
  • Enhanced C-shell tchs (csh)
  • Bourne-Again Shell, bash (sh)
  • Korn Shell (ksh)
  • These notes will focus on the first two shells.

4
Shells Features
  • The bash an tcsh shells are similar in the
    features the offer. In particular
  • Pass arguments to your script
  • Set and reference variables
  • Use of control flow
  • Interact with the user (read user input)
  • Comments
  • Info on commands a given shell offers can be
    found in the man pages for that shell.
  • There are many Linux/UNIX references that give
    detailed information and tips.

5
Shell Scripts
  • What are they for?
  • To automate certain common activities an user
    performs routinely.
  • They serve the same purpose as batch files in
    DOS/Windows.
  • Example
  • rename 1000 files from upper case to lowercase

6
What are Shell Scripts
  • Just text/ASCII files with
  • a set of standard UNIX/Linux commands (ls, mv,
    cp, less, cat, etc.) along with
  • flow of control
  • some conditional logic and branching (if-then),
  • loop structures (foreach, for, while), and
  • I/O facilities (echo, print, set, ...).
  • They allow use of variables.
  • They are interpreted by a shell directly.
  • Some of them (csh, tcsh) share some of C syntax.
  • DOS/Win equivalent - batch files (.bat)

7
Why not use C/C for that?
  • C/C programming requires compilation and
    linkage, maybe libraries, which may not be
    available (production servers).
  • For the typical tasks much faster in development,
    debugging, and maintenance (because they are
    interpreted and do not require compilation).

8
Shell Script Invocation
  • Specify the shell directly
  • tcsh myshellscript
  • tcsh -v myshellscript(-v verbose, useful for
    debugging)
  • Make the shell an executable first and then run
    is a command (set up an execution permission)
  • chmod ux myshellscript
  • Then either this
  • myshellscript(if the path variable has . in
    it security issue!)
  • Or
  • ./myshellscript(should always work)

9
Shell Script Invocation (2)
  • If you get an errormyshellscrip command not
    found
  • The probably . is not in your path or theres
    no execution bit set.
  • When writing scripts, choose unique names, that
    preferably do not match system commands.
  • Bad name would be test for example, since there
    are many shells with this internal command.
  • To disambiguate, always precede the shell with
    ./ or absolute path in case you have to name
    your thing not very creatively.

10
Start Writing a Shell Script
  • The very first line, often called 'shebang' (!)
    should precede any other line, to assure that the
    right shell is invoked.
  • Comments start with '', with the exception of
    !, , which are a special character sequences.
  • Everything on a line after is ignored if is
    not a part of a quoted string or a special
    character sequence.

!/bin/tcsh !/bin/bash This is
for tcsh For Bourne-Again
Shell !/bin/sh This is for Bourne Shell
11
tchsQuick Ref
12
Variables
  • Variables start with a sign when they are used.
  • x, val
  • There's no when a variable is declared.
  • set x 3
  • _at_ y 1
  • set input "lt"
  • There are some system, predefined variables
  • 0, 1, 3 .... - argument references (arguments
    themselves)
  • - all the arguments
  • lt - user's input from STDIN
  • - of arguments passed to the script

13
if
  • if ( ltexpressiongt ) then
  • ltstatementsgt
  • else if ( ltanother-expressiongt ) then
  • ltstatementsgt
  • else
  • ltstatementsgt
  • endif

14
foreach
  • foreach var ( ltlist-of-valuesgt )
  • ltstatementsgt
  • end

15
switch
  • switch ( string )
  • case str1
  • ltstatementsgt
  • breaksw
  • ...
  • default
  • ltstatementsgt
  • breaksw
  • endsw

16
while
  • while ( ltexpressiongt )
  • ltstatementsgt
  • end

17
File Inquiry Operators-op file
  • r Read access
  • w Write access
  • x Execute access
  • e Existence
  • o Ownership
  • z Zero size
  • s Non-zero size
  • f Plain file
  • d Directory
  • l Symbolic link
  • b Block special file
  • c Character special file
  • p Named pipe (FIFO)
  • S Socket special file

18
Example
  • See creator and uptolow.
  • NOTE run them in a some temporary directory to
    do not mess with your own valuable files.
  • The uptolow script
  • will convert any uppercase letters in an ordinary
    file name to lowercase.
  • will leave directories untouched.

19
Bourne ShellQuick Ref
20
Quick Note
  • In no way this going to be a duplication for the
    zillions of resources on Bourne Shell, but more a
    quick reference/syntax for most often used
    constructs and pointers to resources where else
    to find that kind of stuff. Some of it is a lame
    reap off the man page and so on.

21
Quick Resource Summary
  • Manual Pagesman bash
  • An Intro to UNIX Shelllthttp//steve-parker.org/
    sh/bourne.htmlgt
  • How To Write a Shell Scriptlthttp//www.tinker.n
    csu.edu/LEGO/shell_help.htmlgt

22
Bourne Shell Script Constructs Reference
  • System/Internal Variables
  • Control Flow (if, for, case)

23
Internal Variables
Will tell you of command line arguments supplied
0 Ourselves (i.e. name of the shell script executed with path)
1 First argument to the script
2 Second argument, and so on
? Exit status of the last command
Our PID
! PID of the last background process
- Current shell status
24
Internal Variables (2)
  • Use shift command to shift the arguments one
    left
  • Assume intput
  • ./shift.sh 1 2 foo bar
  • 0 ltdirectory-ofgt/shift.sh
  • 1 1
  • 3 2
  • 4 foo
  • 5 bar
  • shift
  • 1 2
  • 2 foo
  • 3 bar

25
Environment
  • These (and very many others) are available to
    your shell
  • PATH - set of directories to look for commands
  • HOME - home directory
  • MAIL
  • PWD personal working directory
  • PS1 primary prompt
  • PS2 input prompt
  • IFS - what to treat as blanks

26
Control Flow if
  • General Syntax
  • ltexpressiongt can either be a logical expression
    or a command and usually a combo of both.

if ltexpressiongt then ltstatementsgt elif
ltstatementsgt else ltstatementsgt fi
27
if (2)
  • Some Logical Operators
  • -eq --- Equal
  • -ne --- Not equal
  • -lt --- Less Than
  • -gt --- Greater Than
  • -o --- OR
  • -a --- AND
  • File or directory?
  • -f --- file
  • -d --- directory

28
case
  • Syntax

case ltexpressiongt in ltpatter1gtltvalue1gt)
command1 ltpatter2gtltvalue2gt)
command2 esac
29
case (2)
  • case in
  • 1) cat gtgt 1
  • 2) cat gtgt2 lt1
  • 3) case 3 in
  • -abc) echo "-a -b or -c"
  • -foo-bar) echo "-foo or -bar"
  • esac
  • ) echo "we accept up to 3 args only." exit
    127
  • esac

30
for
  • Syntax
  • List can also be a result of a command.

for variable in ltlist of values/wordsgt do
command1 command2 done
31
for (3)
  • for file in .txt
  • do
  • echo File file
  • echo ""
  • cat file
  • echo ""
  • done

32
while
  • Syntax

while ltexpressiongt do command1 command2
done
33
until
  • Syntax

until ltexpressiongt do command1 command2
done
34
To Be Continued...
Write a Comment
User Comments (0)
About PowerShow.com