0% found this document useful (0 votes)
97 views

Unix Commands

The document discusses shell scripts in UNIX. It provides 19 examples of shell scripts covering various features of shell scripting like variables, conditionals, loops, command substitution, file handling and signal handling. The examples demonstrate how shell scripts allow users to combine basic UNIX commands to perform complex tasks in an automated way.

Uploaded by

megarebel
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
97 views

Unix Commands

The document discusses shell scripts in UNIX. It provides 19 examples of shell scripts covering various features of shell scripting like variables, conditionals, loops, command substitution, file handling and signal handling. The examples demonstrate how shell scripts allow users to combine basic UNIX commands to perform complex tasks in an automated way.

Uploaded by

megarebel
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 36

Shell Scripts in UNIX

Prof. P.C.P. Bhatt

P.C.P Bhatt

OS/M13/V1/2004

Unix System Shell Organization


In the below figure we show how a user interacts with UNIX shell.

P.C.P Bhatt

OS/M13/V1/2004

Facilities Offered by Unix Shells


Shell offers a user an interface with the OS kernel. Shell distinguishes between the commands and a request to use a tool. In addition to interactive command interpreter, it also offers a very useful programming environment.

P.C.P Bhatt

OS/M13/V1/2004

The Shell Families


Bourne shell oldest shell. BASH Bourne Again Shell Korn shell C shell c language programming environment tchs more recent version of tchs

P.C.P Bhatt

OS/M13/V1/2004

Four Step Operational Pattern of Shell


1. 2. 3. 4. Read a command line Parse and interpret it. Invoke the execution of the command line. Go to step 1

Shell scripts programs written in shell environment.

P.C.P Bhatt

OS/M13/V1/2004

Subshells
Command to display the current shell echo $SHELL. $SHELL - environment variable storing name of the current shell. set sets values of environment values. get shows values of environment values.

P.C.P Bhatt

OS/M13/V1/2004

Environment Variables
$HOME $IFS $LANG $MAIL $PATH $PS1 $PS2 $SHELL $TERM User Home directory Internal field separator Directory containing language information Path containing users mailbox Colon separated list of directories Prompt for interactive shells Prompt for multi-line command Login shell environment Terminal type

P.C.P Bhatt

OS/M13/V1/2004

Some Options

The options with their effects.

P.C.P Bhatt

OS/M13/V1/2004

Example - 1
# file sh_0.file echo shellfile is running defineavar=avar echo $defineavar echo "making defineavar readonly now" readonly defineavar echo "an attempt to reassign defineavar would not succeed defineavar=newvar
P.C.P Bhatt OS/M13/V1/2004 9

Example - 1

P.C.P Bhatt

OS/M13/V1/2004

10

Special Variables

A partial list of special variables.

P.C.P Bhatt

OS/M13/V1/2004

11

Example - 2
# file sh_1.file # For this program give an input like "This is a test case" i.e. 5 parameters echo we first get the file name echo $0 echo we now get the number of parameters that were input echo $# echo now we now get the first three parameters that were input echo $1 $2 $3 shift echo now we now shift and see three parameters that were input echo $1 $2 $3
P.C.P Bhatt OS/M13/V1/2004 12

Example - 2

P.C.P Bhatt

OS/M13/V1/2004

13

Example - 3
# file sh_2.file # This is to find out if a certain parameter has been defined. echo param is not defined so we should get a null value for param echo ${param} echo param is not defined with "?" option we get the error message echo ${param?error}

P.C.P Bhatt

OS/M13/V1/2004

14

Example - 3

P.C.P Bhatt

OS/M13/V1/2004

15

Example - 4
# file sh_2a.file # This is to find out if a certain parameter has been defined. echo param is not defined so we should get a null value for param echo ${param} # echo param is not defined with "?" option we get the error message # echo ${param?error} echo param is not defined with "-" option we get the quoted message echo ${param-'user generated quoted message'}

P.C.P Bhatt

OS/M13/V1/2004

16

Example - 4

P.C.P Bhatt

OS/M13/V1/2004

17

Example - 5
# file sh_2b.file # This is to find out if a certain parameter has been defined. echo param is not defined so we should get a null value for param echo ${param} # echo param is not defined with "?" option we get the error message # echo ${param?error} echo param is not defined with "=" option we get the quoted message echo ${param='user generated quoted message'}

P.C.P Bhatt

OS/M13/V1/2004

18

Example - 5

P.C.P Bhatt

OS/M13/V1/2004

19

Example - 6
# file sh_3.file echo the next line shows command substitution within back quotes echo I am `whoami` echo today is `date` echo there are `who | wc -l` users at the moment echo var a is now assigned the result of echo backquoted whoami a=`whoami` echo we shall output its value next echo $a echo also let us reassign a with the value for environment var HOME a=`echo $HOME` echo $a echo a double dollar is a special variable that stores process id of the shell echo $$ echo the shell vars can be used to generate arguments for Unix commands echo like files in the current directory are cur_dir=. ls $cur_dir
P.C.P Bhatt OS/M13/V1/2004 echo list the files under directory A ls $cur_dir/A 20

Example - 6 Contd..

P.C.P Bhatt

OS/M13/V1/2004

21

Example - 7
# file sh_3a.file # In this file we learn to use quotes. There are three types of quotes # First use of a single quote within which no substitution takes place a=5 echo 'Within single quotes value is not substituted i.e $a has a value of $a' # now we look at the double quote echo "Within double quotes value is substituted so dollar a has a value of $a" echo Finally we look at the case of back quotes where everything is evaluated echo `$a` echo `a` echo Now we show how a single character may be quoted using reverse slash echo back quoted a is \`a and dollar a is \$a echo quotes are useful in assigning variables values that have spaces b='my name' echo value of b is = $b
P.C.P Bhatt OS/M13/V1/2004 22

Example - 8
# file sh_3b.file # In this file we shall study the set command. Set lets you # view shell variable values echo ---------out put of set -------------- set echo use printenv to out put variables in the environment echo ---------out put of printenv -------------- printenv

P.C.P Bhatt

OS/M13/V1/2004

23

Example - 9
# file sh_4.file # this file shows the use of eval function in the shell b=5 a=\$b echo a is $a echo the value of b is $b eval echo the value of a evaluated from the expression it generates i.e. $a c=echo eval $c I am fine d=\$c echo the value of d is $d eval eval $d I am fine
P.C.P Bhatt OS/M13/V1/2004 24

Example 9 Contd

P.C.P Bhatt

OS/M13/V1/2004

25

Example - 10
file sh_5.file # This file shows how we may group a process into a detached process # by enclosing it in parentheses. # Also it shows use of sleep command echo basically we shall sleep for 5 seconds after launching echo a detached process and then give the date (sleep 5; date)

P.C.P Bhatt

OS/M13/V1/2004

26

Example - 11
# file sh_6.file # Typically << accepts the file till the word that follows # in the file. In this case the input is taken till # the word end appears in the file. # # This file has the command as well as data in it. # Run it : as an example : sh_6.file 17 to see him 2217 as output. # $1 gets the file argument. grep $1<<end /* grep is the pattern matching command in Unix */ me 2216 him 2217 others 2218 end
P.C.P Bhatt OS/M13/V1/2004 27

Example - 12
The basic pattern of the if command is just like in the programming languages. It is: if condition then command_pattern_for_true else command_pattern_for_false Fi
# file sh_7.file if ls my_file.ps then lpr -Pbarolo-dup my_file.ps /* prints on printer barolo on both sides */ else echo "no such file in this directory" fi
P.C.P Bhatt OS/M13/V1/2004 28

Example - 13
# file sh_7a.file # This file demonstrates use of case # In particular note the default option and usage of selection # Note the pattern matching using the regular expression choices. case $1 in [0-9]) echo "OK valid input : a digit ";; [a-z]|[A-Z]) echo "OK valid input : a letter ";; *) echo "please note only a single digit or a letter is valid as input";; esac
P.C.P Bhatt OS/M13/V1/2004 29

Example - 14
# file sh_8.file # In this file we illustrate use of for command # It may be a good idea to remove some file called # dummy in the current directory as a first step. # echo removing dummy rm dummy for i in `ls`; do echo $i >> dummy; done grep test dummy

P.C.P Bhatt

OS/M13/V1/2004

30

Example - 15
Now we shall demonstrate the use of expr command. This command offers an opportunity to use integer arithmetic as shown below : b=3 echo value of b is = $b echo we shall use as the value of b to get the values for a echo on adding two we get a=`expr $b + 2` echo $a

P.C.P Bhatt

OS/M13/V1/2004

31

Example - 16
# file sh_9a.file # this file illustrates the use of expr and test commands b=3 echo on adding two we get a=`expr $b + 2` echo $a echo on multiplying two we get a=`expr $b \* 2` /* Note the back slash preceding star */ # We shall see the reason for using back slash before star in the next example echo $a test $a -gt 100 $? test $a -lt 100 $? test $a -eq 6 $? test $a = 6 $? test $a -le 6 $? test $a -ge 6 $? test $a = 5 $? if (test $a = 5) then echo "found equal to 5" else echo "found not equal to 5" fi test $a = 6 if (test $a = 6) then echo "the previous test was successful" fi OS/M13/V1/2004

P.C.P Bhatt

32

Example - 17
Now we shall use some regular expressions commonly used with file names.
# file sh_10.file # in this program we identify directories in the current directory echo "listing all the directories first" for i in * do if test -d $i then echo "$i is a directory" fi done echo "Now listing the files" for i in * do if test -f $i then echo "$i is a file" fi done echo "finally the shell files are" ls | grep sh_
P.C.P Bhatt OS/M13/V1/2004 33

Example - 18
# file sh_11.file # In this file we learn about the trap command. We will first # create many files with different names. Later we will remove # some of these by explicitly trapping touch rmf1 touch keep1 touch rmf2 touch rmf3 touch keep2 touch rmf4 touch keep3 echo "The files now are" ls rmf* ls keep* trap `rm rm*; exit` 1 2 3 9 15 echo "The files now are" ls rmf* ls keep*
P.C.P Bhatt OS/M13/V1/2004 34

Example - 18 Contd..

P.C.P Bhatt

OS/M13/V1/2004

35

Example - 19
Now we assume the presence of files of telephone numbers. Also, we demonstrate how Unix utilities can be used within the shell scripts.

# file sh_12.file # In this file we invoke a sort command and see its effect on a file # Also note how we have used input and output on the same line of cmd. sort < telNos > stelNos # We can also use a translate cmd to get translation from lower to upper case tr a-z A-Z < telNos > ctelNos

P.C.P Bhatt

OS/M13/V1/2004

36

You might also like