Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Operating Systems Lecture 3 Shell Scripts. 2 Brief review of unix1.txt n Glob Construct (metacharacters) and other special characters F ?, *, [] F Ex.

Similar presentations


Presentation on theme: "1 Operating Systems Lecture 3 Shell Scripts. 2 Brief review of unix1.txt n Glob Construct (metacharacters) and other special characters F ?, *, [] F Ex."— Presentation transcript:

1 1 Operating Systems Lecture 3 Shell Scripts

2 2 Brief review of unix1.txt n Glob Construct (metacharacters) and other special characters F ?, *, [] F Ex. ls prog?.c ls p*.c ls ???.* F ls prog[123].c ls [m-s]* ls [1-5A-Z] F ls [!ABC] [!a-z0-47] F Other characters: ~; ~user; ~-; ~+

3 3 More unix commands n grep (egrep) n find n head n tail n cut n paste n sed n tr n Tee n Jobs n fg %1 n !! !-n !cmd ^str1^str2^

4 4 Shell scripts n Typing on command line F One time task n Shell scripts F Executable ASCII file containing shell command F Can run like a program F Deal with complex task F Repeat it later

5 5 Shell script cont’d n A shell script, in its most basic form, is simply a collection of operating system commands put into a text file in the order they are needed for execution. F #!/bin/bash F rm -f /tmp/listing.tmp> /dev/null 2>&1 F touch /tmp/listing.tmp F ls -l [a-z]*.doc | sort> /tmp/listing.tmp F lpr -Ppostscript_1 /tmp/listing.tmp F rm -f /tmp/listing.tmp

6 6 Shell Programming 1.Shell scripts must be marked as executable: chmod a+x myScript 2. Use # to start a comment. Comments run from # to the end of the line. 3. All shell scripts begin with the interpreter you want to use: #!/bin/bash Example: #!/bin/bash who | grep ycjiang exit 0

7 7 Running a shell script To run a UNIX script: 1)Type the script into a file. 2)Change the file permission to executable. 3)Execute it (by typing the filename at the prompt).

8 8 Shell Variables Shell variables are stored as strings: Example: #!/bin/bash x=1# Note: No spaces in assignment. # If space after x, thinks x is a command echo The value of x is $x # $x prints the value of variable x echo The home directory is $HOME echo The current shell is $SHELL (Note: to debug, use -x: sh -x scriptFileName This will list the commands as they are executed.)

9 9 Using Quotes Single quote: Groups together characters until end quote. $ is not processed. Example: #!/bin/sh grep Constance John /etc/passwd #Tries to open John as a file grep 'Constance John' /etc/passwd #Searches for Constance John #in passwd file x=1 echo $x#echos 1 echo '$x'#echos $x exit 0

10 10 Double Quotes Double quotes act like single quotes, except the $ is processed: #!/bin/bash x=1 echo $x#echos the value of x echo "$x"#echos the value of x address="College of the Engineering and Science" echo $address#echos College of the Engineering and Science echo "$address"#ditto exit 0

11 11 More Quotes Backslash (\): Places a single quote around a character: \> is the same as '>' Back quote (`): Tells shell to execute the enclosed command and insert the output here: #!/bin/bash echo There are `who | wc -l` users logged on exit 0 Try these examples out for yourself!

12 12 Evaluating Expressions Use expr to evaluate arithmetic expressions: Example: #!/bin/bash i=1 i=`expr $i + 1` #use back quote echo $i #prints out 2 exit 0

13 13 Common Mistakes Mistake 1: Leaving out expr: #!/bin/bash i=1 i=$i+1 echo $i #prints 1+1 exit 0 Mistake 2: Leaving out spaces around + #!/bin/bash i=1 i=`expr $i+1` echo $i #prints out 1+1 exit 0

14 14 Using Arguments with a Shell script Example command: >myShell arg1 arg2 arg3 arg1 is accessed by $1, arg2 is accessed by $2, etc. Question: What is accessed by $0 ? The number of arguments (not including the command) is given by $# $# for the above command line is 3.

15 15 example n #!/bin/bash n #source: prnargs n #shell pgm to print out its first 2 args n echo The first argument is: $1 n echo The second argument is: $2 n exit 0

16 16 To run: n First, make sure it is executable (has execute permissions for user), F /home/ycjiang> prnargs "Hello there" world 4 The first argument is: Hello there 4 The second argument is: world F Note: spacing is correct, it ignores fact that I lined up the 2 args in the echo n --could have used quotes in echo, F echo "The first argument is: " $1 F echo "The second argument is:" $2 F --or could have used echo backslash n -escape TAB char, \t (see man echo) F echo -e "The first argument is:\t" $1 F echo -e "The second argument is:\t" $2

17 17 The shift command The shift command shifts each variable down 1. $2 becomes $1, etc. $0 is not shifted. It always refers to the command name. Example command line: >cmd x y z Example script: #!/bin/sh echo $# $0 $1 $2 #prints 3 cmd x y shift echo $# $0 $1 $2 #prints 2 cmd y z shift echo $# $0 $1 $2 #prints 1 cmd z exit 0

18 18 The read command Use the read command to read in from the keyboard: Example: !/bin/bash read x y z echo "x = " $x echo "y = " $y echo "z = " $z read text echo "text = " $text exit 0 If type "I love shell programming!" at first read: $x is "I", $y is "love" and $z is "shell programming!" If type "I love shell programming!" at second read: $text is "I love shell programming" Use < to read in from a file: read x y z < myFile

19 19 Conditionals Example of a conditional statement: #!/bin/bash read name if [ "$name" = Joe ] then echo It is Joe else echo It is "$name", not Joe fi #fi marks the end of the statement exit 0

20 20 Integer comparisons -eq (or =)is equal to -gegreater than or equal to -gtgreater than -leless than or equal to -ltless than -nenot equal to Example: if [ num1 -lt num2 ] then... fi

21 21 for loops Example: #!/bin/bash for i in 1 2 3 4 5 do for j in.1.2.3.4.5 do echo $i$j done exit 0 Note: break command exits loop continue loops back to top, skipping the rest of the current iteration.

22 22 while loops Example: #!/bin/bash i=1 num=5 while [ $i -le $num ] do echo $i >> file_test i=`expr $i + 1` done exit 0 What does this do? Note: while read x loops until zero exit status not returned from read.

23 23 Defining Functions Example: #!/bin/bash nu() { who | wc -l } echo Number of users is `nu` echo Number of users is now `nu` exit 0

24 24 Writing Good Shell Scripts 1.Verify that the correct number of arguments is used: #!/bin/bash if [$# -ne 3 ] then echo "only $# parameters entered." echo "Usage: $0 arg1 arg2 arg3" exit 127 fi exit 0 2.Use good design and style (e.g. use functions and comments. 3.Return an exit status: exit 0 #things worked OK exit 127 #non-zero: error occurred. See /usr/include/sysexits.h for sample exit codes.

25 25 Tutorials on shell scripting n http://www.injunea.demon.co.uk/


Download ppt "1 Operating Systems Lecture 3 Shell Scripts. 2 Brief review of unix1.txt n Glob Construct (metacharacters) and other special characters F ?, *, [] F Ex."

Similar presentations


Ads by Google