Shell Control Structures

Slides:



Advertisements
Similar presentations
CIS 240 Introduction to UNIX Instructor: Sue Sampson.
Advertisements

Introduction to Unix – CS 21 Lecture 11. Lecture Overview Shell Programming Variable Discussion Command line parameters Arithmetic Discussion Control.
CS Lecture 03 Outline Sed and awk from previous lecture Writing simple bash script Assignment 1 discussion 1CS 311 Operating SystemsLecture 03.
Shell Programming Software Tools. Slide 2 Shells l A shell can be used in one of two ways: n A command interpreter, used interactively n A programming.
CS 497C – Introduction to UNIX Lecture 33: - Shell Programming Chin-Chih Chang
Shell Programming Learning Objectives: 1. To understand the some basic utilities of UNIX File 2. To compare UNIX shell and popular shell 3. To learn the.
Shell Programming 1. Understanding Unix shell programming language: A. It has features of high-level languages. B. Convenient to do the programming. C.
Bash Shell Scripting 10 Second Guide Common environment variables PATH - Sets the search path for any executable command. Similar to the PATH variable.
Shell Programming. Shell Scripts (1) u Basically, a shell script is a text file with Unix commands in it. u Shell scripts usually begin with a #! and.
Shell Script Examples.
Lab 8 Shell Script Reference:
Shell Control Structures CSE 2031 Fall August 2015.
1 Operating Systems Lecture 3 Shell Scripts. 2 Shell Programming 1.Shell scripts must be marked as executable: chmod a+x myScript 2. Use # to start a.
1 Operating Systems Lecture 3 Shell Scripts. 2 Brief review of unix1.txt n Glob Construct (metacharacters) and other special characters F ?, *, [] F Ex.
Chapter 5 Bourne Shells Scripts By C. Shing ITEC Dept Radford University.
1 Shell Programming – Extra Slides. 2 Counting the number of lines in a file #!/bin/sh #countLines1 filename=$1#Should check if arguments are given count=0.
Shell Scripting Todd Kelley CST8207 – Todd Kelley1.
Day 8,9,10 COP 3502 Introduction to Shell Scripts David A. Gaitros Department of Computer Science Florida State University.
OPERATING SYSTEMS DESIGN UNIX BASICS & SHELL SCRIPTING.
Writing Shell Scripts ─ part 3 CSE 2031 Fall October 2015.
CMPSC 60: Week 6 Discussion Originally Created By: Jason Wither Updated and Modified By: Ryan Dixon University of California Santa Barbara.
UNIX Shell Script (1) Dr. Tran, Van Hoai Faculty of Computer Science and Engineering HCMC Uni. of Technology
Course materials may not be reproduced in whole or in part without the prior written permission of IBM. 5.1 © Copyright IBM Corporation 2008 Unit 11: Shell.
#!/bin/sh echo Hello World cat Firstshellscript.sh Firstshellscript.sh.
Shell Programming. Introducing UNIX Shells  Shell is also a programming language and provides various features like variables, branching, looping and.
Shell Programming. Creating Shell Scripts: Some Basic Principles A script name is arbitrary. Choose names that make it easy to quickly identify file function.
Chapter 10: BASH Shell Scripting Fun with fi. In this chapter … Control structures File descriptors Variables.
(A Very Short) Introduction to Shell Scripts CSCI N321 – System and Network Administration Copyright © 2000, 2003 by Scott Orr and the Trustees of Indiana.
Shell Programming Learning Objectives: 1. To understand the some basic utilities of UNIX File 2. To compare UNIX shell and popular shell 3. To learn the.
LIN Unix Lecture 5 Unix Shell Scripts. LIN Command Coordination ; && || command1 ; command2 Interpretation: Do command 1. Then do command.
©Colin Jamison 2004 Shell scripting in Linux Colin Jamison.
1 Lecture 9 Shell Programming – Command substitution Regular expressions and grep Use of exit, for loop and expr commands COP 3353 Introduction to UNIX.
1 © 2000 John Urrutia. All rights reserved. Session 5 The Bourne Shell.
CSCI 330 UNIX and Network Programming Unit IX: Shell Scripts.
Shell Script2 Reference: Linux Shell Scripting Tutorial v1.05r3 A Beginner's handbook
Agenda Positional Parameters / Continued... Command Substitution Bourne Shell / Bash Shell / Korn Shell Mathematical Expressions Bourne Shell / Bash Shell.
Flow Control. The order in which commands execute in a shell script is called the flow of the script. When you change the commands that execute based.
Lab 8 Shell Script Reference: Linux Shell Scripting Tutorial v1.05r3 A Beginner's handbook
Shell script – part 2 CS 302. Special shell variable $0.. $9  Positional parameters or command line arguments  For example, a script myscript take 2.
CSCI 330 UNIX and Network Programming Unit X: Shell Scripts II.
Assigning Values 1. $ set One Two Three [Enter] $echo $1 $2 $3 [Enter] 2. $set `date` [Enter] $echo $1 $2 $3 [Enter] 3. $echo $1 $2 $3 $4 $5 $6 [Enter]
Compunet Corporation Introduction to Unix (CA263) Round and Round By Tariq Ibn Aziz Dammam Community College.
CS 403: Programming Languages Lecture 20 Fall 2003 Department of Computer Science University of Alabama Joel Jones.
1 UNIX Operating Systems II Part 2: Shell Scripting Instructor: Stan Isaacs.
Shell Control Structures CSE 2031 Fall June 2016.
1 Lecture 8 Shell Programming – Control Constructs COP 3353 Introduction to UNIX.
Bash Shell Scripting 10 Second Guide.
Shell Control Structures
Agenda Bash Shell Scripting – Part II Logic statements Loop statements
CSC 352– Unix Programming, Fall 2012
Part 1: Basic Commands/Utilities
Lecture 9 Shell Programming – Command substitution
Shell Programming (ch 10)
Unix Scripting Session 4 March 27, 2008.
Writing Shell Scripts ─ part 3
Agenda Control Flow Statements Purpose test statement
Pepper (Help from Dr. Robert Siegfried)
UNIX Reference Sheets CSE 2031 Fall 2010.
Command Substitution Command substitution is the mechanism by which the shell performs a given set of commands and then substitutes their output in the.
CSE 303 Concepts and Tools for Software Development
Linux Shell Script Programming
Presented by, Mr. Satish Pise
Shell Control Structures
CSC 352– Unix Programming, Fall, 2011
Chapter 5 Bourne Shells Scripts
Chapter 3 The UNIX Shells
Essential Shell Programming
Introduction to Bash Programming, part 3
Review.
Review The Unix Shells Graham Glass and King Ables,
Presentation transcript:

Shell Control Structures EECS 2031 4 May 2019

Control Structures if then else for while case (which) until

if Statement and test Command Syntax: if condition then command(s) elif condition_2 else fi Command test is often used in condition.

if – then – else Example % cat if_else #!/bin/sh echo -n 'Enter string 1: ' read string1 echo -n 'Enter string 2: ' read string2 if test $string1 = $string2 then echo 'They match!' else echo 'No match!' fi % if_else Enter string 1: acd Enter string 2: 123 No match! Enter string 1: 123 They match!

test Command also returns false if file or directory does not exist also returns true if file or directory does not exist  empty file There must be a space between ! and minus sign. ─e file file or directory exists

test Command (2) Parentheses can be used for grouping test conditions.

test Example 1 % cat check_file #!/bin/sh if test ! -s $1 then echo "File $1 is empty.“ exit 1 else ls -l $1 fi % touch z.txt % check_file z.txt File z.txt is empty.

test Example 2 % cat check_file #!/bin/sh if test $# -eq 0 then echo Usage: check_file file_name exit 1 fi if test ! -s $1 echo "File $1 is empty.“ else ls -l $1

test Example 3 What is wrong with the following script? % cat chkex2 #!/bin/sh # Check if a file is executable. if test -x $1 then echo File $1 is executable. else echo File $1 is not executable. fi If file does not exist, it still prints “File $1 is not executable.”

test and Logical Operators !, || and && as in C Following is better version of test Example 3 %cat chkex #!/bin/sh if test -e $1 && test -x $1 then echo File $1 is executable. elif test ! -e $1 echo File $1 does not exist. else echo File $1 is not executable. fi

for Loops for variable in list do command(s) done variable is a user-defined variable. list is a sequence of strings separated by spaces.

for Loop Example 1 % cat fingr #!/bin/sh for name in $* do finger $name done Recall that $* stands for all command line arguments the user enters.

for Loop Example 2 % cat fsize #!/bin/sh for i in $* do echo "File $i: size `cat $i | wc –c` bytes" done % fsize chex chfile chfile2 File chex: size 86 bytes File chfile: size 90 bytes File chfile2: size 163 bytes

for Loop Example 3 % cat rmread #!/bin/sh # Remove the read permission for “others” # from all files in the working directory. for i in * do chmod o-r $i ls –l $i done

for Loop Example 4 % cat prdir #!/bin/sh # Display all c files in a directory # specified by argument 1. for i in $1/*.c do echo "======= $i ======" more $i done

Arithmetic Operations Using expr The shell is not intended for numerical work (use Java, C, or Perl instead). However, expr utility may be used for simple arithmetic operations on integers. expr is not a shell command but rather a UNIX utility. To use expr in a shell script, enclose the expression with backquotes. Example: #!/bin/sh sum=`expr $1 + $2` echo $sum Note: spaces are required around the operator + (but not allowed around the equal sign).

expr Example % cat cntx #!/bin/sh # Count the number of executable files in # the current working directory count=0 for i in * # what if we replace * with $* ? do if test -x $i then count=`expr $count + 1` ls -l $i fi done echo “There are $count executable files.”

while Loops while condition do command(s) done Command test is often used in condition. Execute command(s)when condition is met.

while Loop Example (1) % cat dargs #!/bin/sh # Display the command line arguments, one per line. count=1 argc=$# while test $count -le $argc do echo "Argument $count is: $1" count=`expr $count + 1` shift # shift arg 2 into arg 1 position done # What happens if the while statement is as follows? # while test $count -le $#

Homework What happens if in the above program we do not use variable argc, but write the while statement as follows? while test $count -le $# Rewrite the script using a for loop instead of a while loop.

while Loop Example (2) % cat myecho #!/bin/sh # Read lines from standard input until EOF (Ctrl-D) while read myline do echo "$myline" done

I/O Redirection of Control Structures Control structures can be treated as any other command with respect to I/O redirection. Note: This script trims leading/trailing whitespace ignores backlash characters ‘\’ ignores the last line if it does not end with a ‘\n’ % cat weakcat #!/bin/sh # My (weaker) version of "cat" while read myline do echo "$myline" done < $1 # read lines from file $1

I/O Redirection: Example % cat weakcat #!/bin/sh # My (weaker) version of "cat" while read myline do echo "$myline" done < $1 > $1.out # read lines from file $1 # write lines to file $1.out

until Loops until condition do command(s) done Command test is often used in condition. Exit loop when condition is met.

until Loop Example % cat grocery #!/bin/sh # Enter a grocery list and # store in a file indicated by $1 # echo To end list, enter \"all\". item=nothing until test $item = “all” do echo -n "Enter grocery item: " read item echo $item >> $1 done

until Loop Example Output % grocery glist To end list, enter "all". Enter grocery item: milk Enter grocery item: eggs Enter grocery item: lettuce Enter grocery item: all % cat glist milk eggs lettuce all

case Statement case variable in pattern1) command(s);; . . . patternN) command(s);; *) command(s);; # all other cases esac Why the double semicolons?

case Statement Example % cat mysched #!/bin/sh echo -n "Enter the day (mon, tue, wed, thu, fri): " read day case $day in mon) echo 'CSE2031 2:30-4:30 CLH-H' echo 'CSE2021 17:30-19:00 TEL-0016';; tue | thu) echo 'CSE2011 17:30-19:00 SLH-E';; wed) echo 'No class today. Hooray!';; fri) echo 'CSE2031 2:30-4:30 LAB 1006';; *) echo 'Day off. Hooray!';; esac

Process-Related Variables Variable $$ is PID of the shell. % cat showpid #!/bin/sh ps echo PID of shell is $$ % showpid

Process Exit Status All processes return exit status (return code). Exit status tells us whether the last command was successful or not. Stored in variable $? 0 (zero) means command executed successfully. 0 is good; non-zero is bad. Good practice: Specify your own exit status in a shell script using exit command. default value is 0 (if no exit code is given).

Process Exit Status: Example An improved version of grep. % cat igrep #!/bin/sh # Arg 1: search pattern # Arg 2: file to search # grep $1 $2 if test $? -ne 0 then echo Pattern not found. fi % igrep ‘bin’ grocery #!/bin/sh % igrep ‘bin2’ grocery Pattern not found.

Next lecture Shell scripting – part 3 Reading for this lecture: 3.6 to 3.8 and Chapter 5, UNIX textbook Posted notes (chapter 33)