Shell Program examples

Back Up Next

horizontal rule

Home
Chapter 1
Chapter 2
Chapter 3
The Shell
Parameters and Variables
The Bourne Again Shell
Grep and AWK
Control Structures
Shell Program examples
TC Shell
Programming tools
Networking and the Internet

IF-then-elif

$cat greetings

#

#Greetings

#A program sample using the if-then-elif construct

#This program displays greetings according to the time of the day

#

set `date` #set positional variable to date

string

hour=$4 #store part of date string that

shows the hour

if [ "$hours" –lt 12 ]

then

echo "GOOD MORNING"

elif [ "$hour" lt 18 ]

then

echo "GOOD AFTERNOON"

else

echo "GOOD EVENING"

fi

 

 

FOR LOOP

 

for loopindex in argument-list

do

Commands

done

 

 

 

[wmorales@rc02uxas01 scripts]$ cat fruit.sh

for fruit in apples oranges pears bananas

do

echo "$fruit"

done

echo "Task complete."

 

 

 

[wmorales@rc02uxas01 scripts]$ bash fruit.sh

apples

oranges

pears

bananas

Task complete.

[wmorales@rc02uxas01 scripts]$

For

for loop-index

do

commands

done

Example:

args implies for args in "$@"

$cat for_test

for args

do

print $args

done

$ for_test candy gum chocolate #call to program

candy

gum

chocolate

 

While loop

$cat count

#!/bin/bash

number=0

while [ "$number" -lt 10 ]

do

echo -n "$number"

let number="$number"+1

done

echo

Arithmetic in bash

In any of the shells, arithmetic may be done using the expr command

x=2 y=`expr $x + 2`

bash also allows you to do arithmetic using the let command

x=3 let y=$x+4

Numeric Test Operators

* Table of The test Command Numeric Test Operators

Operator Meaning

-eq Is number 1 equal to number2 ?

-ne Is number1 not equal to number2 ?

-gt Is number 1 great than number2 ?

-ge Is number1 great than or equal to number2 ?

-lt Is number 1 less than number2 ?

-le Is number1 less than or equal to number2 ?

 

 

UNTIL

$cat until

secretname=jenny

name=noname

echo "Try to guess the secret name!"

echo

until [ "$name" = "$secretname" ]

do

echo -n "Your guess: "

read name

done

echo "Very good."

 

$cat uon

#!/bin/bash

#

# uon: let me know if xxx is on the system

#

until who | grep "$1" > /dev/null #redirect the output

of grep

do

sleep 30 #wait half minute

done

echo "$1 is logged on."

exit 0

 

CASE

$cat case1

echo -n "Enter A, B, or C: "

read letter

case "$letter" in

A)

echo "You entered A"

;; #;; means break out of the case

B)

echo "You entered B"

;;

C)

echo "You entered C"

;;

*) # * catch all, if all fail

echo "You did not enter A, B, or C"

;;

esac

 

 

$cat case2

echo -n "Enter A, B, or C: "

read letter

case "$letter" in

a|A)

echo "You entered A"

;;

b|B)

echo "You entered B"

;;

c|C)

echo "You entered C"

;;

*)

echo "You did not enter A, B, or C"

;;

esac

 

$cat command menu

#!/bin/bash

# menu interface to simple commands

echo -e "\n COMMAND MENU\n"

echo " a. Current date and time"

echo " b. Users currently logged in"

echo " c. Name of the working directory"

echo -e " d. Contents of the working directory\n"

echo -e "Enter a, b, c, or d: \c"

read answer

echo

case "$answer" in

a)

date

;;

b)

who

;;

c)

pwd

;;

d)

ls

;;

*)

echo "There is no selection: $answer"

;;

esac

 

File Test Operators

Table of The test Command File Test Operators

Operator Example Meaning

-r -r filename Does filename exist and is it

readable?

-w -w filename Does filename exist and is it

writeable?

-s -s filename Does filename exist and

have a nonzero length?

-f -f filename Does filename exist,

but is it not a directory file?

-d -d filename Does filename exist,and is it a

directory file?

Example"

$cat svi

#!/bin/bash

# The save and invoke vi program

# This program check for the file’s existence

#

if test $# = 1 #check of the number of argument

then

if test –f $1 # check for the file existence

then

cp $1 $HOME/keep #copy and invoke vi

vi $1

else

echo " file not found. Try again"

fi

else

echo " You must specify a file name. Try again."

fi

 

horizontal rule

Back to CS140U Homepage
This page was last modified September 26, 2004
wmorales@pcc.edu