1 shell script examples. 2 a shell script is… a series of os commands for execution stored in a...
Post on 24-Dec-2015
214 Views
Preview:
TRANSCRIPT
1
Shell Script Examples
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
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
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
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
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 [$@]"
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]
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)
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 “|”
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
11
Quoting
"" Everything taken literally, except $ (variable substitution) ` (command substitution) “ (ending mark)
'' Everything taken literally
\ Character following \ taken literally
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
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
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
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
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
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
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
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
top related