1 shell script examples. 2 a shell script is… a series of os commands for execution stored in a...

19
1 Shell Script Examples

Upload: baldwin-sanders

Post on 24-Dec-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

1

Shell Script Examples

Page 2: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

2

A shell script is…

A series of OS commands for execution Stored in a text file

#!/bin/shrm -f /tmp/listing.tmp > /dev/null 2>&1touch /tmp/listing.tmpls -l [a-z]*.doc | sort > /tmp/listing.tmplpr -Ppostscript_1 /tmp/listing.tmprm -f /tmp/listing.tmp

Page 3: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

3

Components of a script

#!/bin/shrm -f /tmp/listing.tmp > /dev/null 2>&1touch /tmp/listing.tmp# This is a commentls -l [a-z]*.doc | sort > /tmp/listing.tmplpr -Ppostscript_1 /tmp/listing.tmprm -f /tmp/listing.tmp

Shell in use (sh, bash, csh)

Comment

Command

Page 4: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

4

How to invoke a script

Correct way$ /bin/bash my_script arg_1 arg_2

Simple way$ my_script arg_1 arg_2

The first line specifying the shell must be provided in simple way

Page 5: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

5

Definitions

Blank = chunk of tab or space Name = sequence of ASCII letters, digits,

underscores, beginning with a letter or underscore

Argument = string supplied on command-line

Page 6: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

6

Example (argument) (1)

#!/bin/sh##############################echo "Script name is [$0]"echo "First argument is [$1]"echo "Second argument is [$2]"echo "This process ID is [$$]"echo "This argument count is [$#]"echo "All arguments [$@]"

Page 7: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

7

Example (argument) (2)

:~> my_script.sh bhecker 1 university

Script name is [my_script.sh]

First argument is [bhecker]

Second argument is [1]

This process ID is [5401]

This argument count is [3]

All arguments [bhecker 1 university]

Page 8: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

8

Filename meta characters* Match any string of zero or more characters

? Match any single character

[abc...] Match any one of the enclosed characters; a hyphen can specify a range (e.g., a-z, A-Z, 0–9)

[!abc...] Match any character not enclosed as above

~ Home directory of the current user

~name Home directory of user name

~+ Current working directory ($PWD)

~- Previous working directory ($OLDPWD)

Page 9: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

9

Simple regular expressions (Korn shell)?(pattern) Match zero or one instance of pattern

*(pattern) Match zero or more instances of pattern

+(pattern) Match one or more instances of pattern

@(pattern) Match exactly one instance of pattern

!(pattern) Match any strings that don't match pattern

Pattern = sequence of patterns separated by “|”

Page 10: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

10

Example (meta characters)

List files having prefix new$ ls new*

Cat files having prefix ch and one more letter$ cat ch?

Vi files starting by letters from D to E$ vi [D-R]*

Print files not *.o and core (Korn shell)$ pr !(*.o|core) | lp

Page 11: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

11

Quoting

"" Everything taken literally, except $ (variable substitution) ` (command substitution) “ (ending mark)

'' Everything taken literally

\ Character following \ taken literally

Page 12: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

12

Example (quoting)

$ echo 'my class is "unix and tools"'

My class is "unix and tools"

$ echo "Well, isn't that \"good\" ?"

Well, isn't that "good" ?

$ echo "You have `ls | wc –l` files in `pwd`"

You have 34 files in /home/bhecker

$ echo "The value of \$x is $x"

The value of $x is 100

Page 13: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

13

Variables (1)

var=value… Set variable to value

${var} Use value of var

${var:-value} Use var if set, otherwise, use value

${var:=value} Use var if set, otherwise, user value and assign it to var

${var:?value} Use var if set, otherwise, print value and exit

${var:+value} Use value of var is set, otherwise use nothing

${#var} Use the length of var

${#*} or ${#@} Use the number of positional arguments

Page 14: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

14

Variables (2)

${var#pattern} Use value of var after removing pattern from the left. Remove shortest matching

${var##pattern} Same as #pattern. Remove longest matching

${var%pattern} Use value of var after removing pattern from the right. Remove shortest matching

${var%%pattern} Same as %pattern. Remove longest matching

Page 15: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

15

Command formscmd1 ; cmd2 Multiple commands on the same line

{cmd1 ; cmd2} Commands as a group in current shell

(cmd1 ; cmd2) Commands as a group in a subshell

cmd1 | cmd2 Pipe

cmd1 `cmd2` Command substitution

cmd1 $(cmd2) POSIX Command substitution (nesting is allowed)

cmd $((expression))

POSIX shell arithmetic substitution

cmd1 && cmd2 AND; cmd1, then cmd2 if (cmd succeeds)

cmd1 || cmd2 OR

! cmd NOT; change exit status

Page 16: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

16

Example (command forms)

$ nroff file > file.txt & Format in the background $ cd; ls Execute sequentially $ (date; who; pwd) > logfile All output is redirected $ sort file | pr -3 | lp Sort file, page output, then print $ vi 'grep -l ifdef *.c' Edit files found by grep $ grep XX file && lp file Print file if it contains the pattern; $ grep XX file || echo "XX not found" otherwise, echo an error message

Page 17: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

17

Simple commands

sort Sort lines

grep Search for regular expressions

basename Get file name from path string

dirname Get directory name from path string

cut Chop up a text by strings or characters

[(test)] Predicate or conditional processor

tr 'a' 'b' Transform characters

expr Simple arithmetic processor

eval Evaluate variables

date Create date strings

head/tail Access lines in files

Page 18: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

18

Example (script) (1)

#!/bin/bash

alphabet="a b c d e" # Initialize a stringcount=0 # Initialize a counterfor letter in $alphabet # Set up a loop controldo # Begin the loop count=‘expr $count + 1’ # Increment the counter # Display the result echo "Letter $count is [$letter]"done

Page 19: 1 Shell Script Examples. 2 A shell script is… A series of OS commands for execution Stored in a text file #!/bin/sh rm -f /tmp/listing.tmp > /dev/null

19

Example (script) (2)

alphabet="a b c d e" # Initialize a stringcount=0 # Initialize a counterwhile [ $count -lt 5 ] # Set up a loop controldo # Begin the loop count=‘expr $count + 1’ # Increment the counter # Position of next letter position=‘bc $count + $count – 1’ letter=‘echo "$alphabet" | cut -c$position-

$position’ # Get next letter # Display the result echo "Letter $count is [$letter]"done