Download presentation
Presentation is loading. Please wait.
Published byJocelin Hopkins Modified over 9 years ago
1
CTEC 1863 – Operating Systems Shell Scripting
2
CTEC1863 - 2009F2 Overview How shell works Command line parameters –Shift command Variables –Including predefined/specials vars Functions
3
CTEC1863 - 2009F3 Shells sh is a command interpreter –It supports a powerful command language –Each invocation of the sh program is called a shell
4
CTEC1863 - 2009F4 Shells (2) OS’s allow invoking commands one at a time from a terminal Shells allow users to: –Combine commands to form new commands –Pass positional parameters to a command –Add or rename commands –Execute commands within loops –Execute commands conditionally –Send commands into the background
5
CTEC1863 - 2009F5 How it works:
6
CTEC1863 - 2009F6 How it works: When you type a command: –Your shell makes a copy of itself through the fork system call (PID 230) –Your shell puts itself to sleep (via the wait system call) until its child process (PID 230) calls exit –The child process calls exec(date) to overwrite itself with the code for date –When the date command is finished, it calls exit() –The child process (230) dies, and your shell wakes up again, and displays the prompt
7
CTEC1863 - 2009F7 Variables Spring into existence by being mentioned –May be assigned string values –Syntax: NAME=STRING –Thereafter "$NAME" will yield "STRING" –No spaces around the = sign!!!!! Double quotes around the right-hand side allow STRING to contain semicolons, spaces, tabs, and newlines
8
CTEC1863 - 2009F8 Examples: $ echo NAME NAME $ NAME=Howard $ echo $NAME Howard $ HIS="/usr/user3" $ ls $HIS
9
CTEC1863 - 2009F9 Positional Parameters Implicitly created when a shell script runs –These variables are known as: $0, $1,..., $9 Try this script: echo "Example of positional parameters" echo "$5" echo $1 echo $2 echo $3 $4 $ PARAMS These parameters are passed Also try changing “$5” to ‘$5’
10
CTEC1863 - 2009F10 shift Used when more than 10 ($0-$9) parameters –After the shift command is executed, the positional parameters from $2... are renamed $1... E.g. if commandfile is invoked as: commandfile arg1 arg2 arg3 arg4 arg5 arg6 $0 $1 $2 $3 $4 $5 $6 After a shift command is executed: commandfile arg1 arg2 arg3 arg4 arg5 arg6 $0 gone $1 $2 $3 $4 $5
11
CTEC1863 - 2009F11 Shift example Try this script: echo "Example of shift command" echo $1 shift echo $1 shift echo $1 With: $./shiftit shows shift command
12
CTEC1863 - 2009F12 set command Forces values into the positional parameters For example: set -- abc def ghi is equivalent to: $1=abc $2=def $3=ghi Note: –Positional parameters are not allowed on the left hand side of an assignment statement. Try this script: set -- THESE THREE VALUES echo $1 $2 $3
13
CTEC1863 - 2009F13 Shell Maintained Variables HOME: Upon login, the shell assigns a user's login directory IFS: Internal field separators, default is blank, tab, newline MAIL: Pathname of the file where your mail is deposited PATH: Search path used to find commands
14
CTEC1863 - 2009F14 Special Variables $# $? $! $$ $- $# records the number of arguments passed to a shell procedure e.g. $ someproc x y z sets $# to 3 –Tell if correct number of args passed in
15
CTEC1863 - 2009F15 Special Variables (2) $? contains the exit status of the last command executed –Zero indicates successful completion –Anything from 1 to 255 indicates failure Often only want to execute next command if last was successful $! contains the process number of the last process run in the background (using &)
16
CTEC1863 - 2009F16 Special Variables (3) $$ contains the process number of the currently running process. –Process numbers are unique among all existing processes. –Often used if a shell procedure needs to create temporary files: … temp=$HOME/temp.$$ ls > $temp … rm $temp …
17
CTEC1863 - 2009F 17 Special Variables (4) $- is string containing the names of all the flags currently turned on in the shell Also… –$* is not considered a special variable –Contains $1, $2,... separated by spaces
18
CTEC1863 - 2009F18 Testing Variables Test command Usage: test EXPRESSION –test evaluates EXPRESSION to true or false –True exit with STATUS 0 –False exit with STATUS !0 test is used for three categories of testing: –Files –Strings –Numbers
19
CTEC1863 - 2009F19 Functions Sequence of commands Defining: function_name () { statements } Use: function_name
20
CTEC1863 - 2009F20 Functions (2) Arguments: print_args () { echo “Arg 1 is $1” echo “Arg 2 is $2” } Passing arguments: print_args arg1 arg2
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.