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

WWW - Wfu.edu/ borwicjh/presentations/UNIX Shell-Scripting Basics

This document provides an overview of UNIX shell scripting basics. It discusses what a shell and shell script are, introduces common shells like bash, and covers basic shell scripting concepts like variables, conditionals, loops, running commands, and searching/monitoring tools. The goal is to provide introductory knowledge on shell scripting and show how it can be used to automate tasks and make a user's life easier when working with UNIX systems.

Uploaded by

sas429s
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views

WWW - Wfu.edu/ borwicjh/presentations/UNIX Shell-Scripting Basics

This document provides an overview of UNIX shell scripting basics. It discusses what a shell and shell script are, introduces common shells like bash, and covers basic shell scripting concepts like variables, conditionals, loops, running commands, and searching/monitoring tools. The goal is to provide introductory knowledge on shell scripting and show how it can be used to automate tasks and make a user's life easier when working with UNIX systems.

Uploaded by

sas429s
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 71

UNIX Shell-Scripting Basics

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

Agenda
What

is a shell? A shell script?


Introduction to bash
Running Commands
Applied Shell Programming

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a shell?

%
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a shell?

/bin/bash
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a shell?

#!/bin/bash
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a shell?
INPUT

shell

OUTPUT

ERROR

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a shell?
Any

Program
But there are a few popular shells

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Bourne Shells

/bin/sh
/bin/bash

Bourne-Again Shell

Steve Bourne
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Other Common Shells


C

Shell (/bin/csh)
Turbo C Shell (/bin/tcsh)
Korn Shell (/bin/ksh)

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

An aside: What do I mean by /bin ?


C

Shell (/bin/csh)
Turbo C Shell (/bin/tcsh)
Korn Shell (/bin/ksh)

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

An aside: What do I mean by /bin ?


/bin,

/usr/bin, /usr/local/bin
/sbin, /usr/sbin, /usr/local/sbin
/tmp
/dev
/home/borwicjh

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a Shell Script?


A Text

File
With Instructions
Executable

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a Shell Script?


% cat > hello.sh <<MY_PROGRAM
#!/bin/sh
echo Hello, world
MY_PROGRAM
% chmod +x hello.sh
% ./hello.sh
Hello, world
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a Shell Script? A Text File


% cat > hello.sh <<MY_PROGRAM
#!/bin/sh
echo Hello, world
MY_PROGRAM
% chmod +x hello.sh
% ./hello.sh
Hello, world
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

An aside: Redirection
cat

> /tmp/myfile
cat >> /tmp/myfile
cat 2> /tmp/myerr
cat < /tmp/myinput
cat <<INPUT
Some input
INPUT
cat > /tmp/x 2>&1

INPUT 0
env
OUTPUT 1

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

ERROR 2

What is a Shell Script? How To Run


% cat > hello.sh <<MY_PROGRAM
#!/bin/sh
echo Hello, world
MY_PROGRAM
% chmod +x hello.sh
% ./hello.sh
Hello, world
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a Shell Script? What To Do


% cat > hello.sh <<MY_PROGRAM
#!/bin/sh
echo Hello, world
MY_PROGRAM
% chmod +x hello.sh
% ./hello.sh
Hello, world
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a Shell Script? Executable


% cat > hello.sh <<MY_PROGRAM
#!/bin/sh
echo Hello, world
MY_PROGRAM
% chmod +x hello.sh
% ./hello.sh
Hello, world
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

What is a Shell Script? Running it


% cat > hello.sh <<MY_PROGRAM
#!/bin/sh
echo Hello, world
MY_PROGRAM
% chmod +x hello.sh
% ./hello.sh
Hello, world
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Finding the program: PATH


%

./hello.sh
echo vs. /usr/bin/echo
% echo $PATH
/bin:/usr/bin:/usr/local/bin:
/home/borwicjh/bin
% which echo
/usr/bin/echo

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Variables and the Environment


% hello.sh
bash: hello.sh: Command not
found
% PATH=$PATH:.
% hello.sh
Hello, world

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

An aside: Quoting
% echo $USER
$USER
% echo $USER
borwicjh
% echo \

% echo deacnet\\sct
deacnet\sct
% echo \
\
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Variables and the Environment


% env
[variables passed to sub-programs]
% NEW_VAR=Yes
% echo $NEW_VAR
Yes
% env
[PATH but not NEW_VAR]
% export NEW_VAR
% env
[PATH and NEW_VAR]
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Welcome to Shell Scripting!

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

How to Learn
man

man bash
man cat
man man

man

man k manual

Learning

the Bash Shell, 2nd Ed.


Bash Reference Cards
http://www.tldp.org/LDP/abs/html/
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Introduction to bash

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

Continuing Lines: \
% echo This \
Is \
A \
Very \
Long \
Command Line
This Is A Very Long Command Line
%
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Exit Status
$?
0

is True

% ls /does/not/exist
% echo $?
1
% echo $?
0
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Exit Status: exit


% cat > test.sh <<_TEST_
exit 3
_TEST_
% chmod +x test.sh
% ./test.sh
% echo $?
3
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: test
%
%
0
%
%
1

test 1 -lt 10
echo $?
test 1 == 10
echo $?

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: test
test
[

[[

1 lt 10 ]

]]

[[

((

this string =~ this ]]

))

((

1 < 10 ))

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: test
[

-f /etc/passwd ]
[ ! f /etc/passwd ]
[ -f /etc/passwd a f /etc/shadow ]
[ -f /etc/passwd o f /etc/shadow ]

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

An aside: $(( )) for Math


% echo $(( 1 + 2 ))
3
% echo $(( 2 * 3 ))
6
% echo $(( 1 / 3 ))
0

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: if
if something
then
:
# elif a contraction of else if:
elif something-else
then
:
else
then
:
fi
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: if
if [ $USER eq borwicjh ]
then
:
# elif a contraction of else if:
elif ls /etc/oratab
then
:
else
then
:
fi
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: if
# see if a file exists
if [ -e /etc/passwd ]
then
echo /etc/passwd exists
else
echo /etc/passwd not found!
fi
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: for
for i in 1 2 3
do
echo $i
done

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: for
for i in /*
do
echo Listing $i:
ls -l $i
read
done

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: for
for i in /*
do
echo Listing $i:
ls -l $i
read
done

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: for
for i in /*
do
echo Listing $i:
ls -l $i
read
done

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: C-style for


for (( expr1
expr2
expr3
do
list
done

;
;
))

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: C-style for


LIMIT=10
for (( a=1
;
a<=LIMIT ;
a++
))
do
echo n $a
done
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: while
while something
do
:
done

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Logic: while
a=0; LIMIT=10
while [ "$a" -lt "$LIMIT" ]
do
echo -n "$a
a=$(( a + 1 ))
done

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Counters
COUNTER=0
while [ -e $FILE.COUNTER ]
do
COUNTER=$(( COUNTER + 1))
done
Note:

race condition
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Reusing Code: Sourcing


% cat > /path/to/my/passwords <<_PW_
FTP_USER=sct
_PW_
% echo $FTP_USER
% . /path/to/my/passwords
% echo $FTP_USER
sct
%
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Variable Manipulation
% FILEPATH=/path/to/my/output.lis
% echo $FILEPATH
/path/to/my/output.lis
% echo ${FILEPATH%.lis}
/path/to/my/output
% echo ${FILEPATH#*/}
path/to/my/output.lis
% echo ${FILEPATH##*/}
output.lis
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

It takes a long time to


become a bash
guru

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Running Programs

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

Reasons for Running Programs


Check

Return Code

$?

Get

Job Output

OUTPUT=`echo

Hello`
OUTPUT=$(echo Hello)
Send

Output Somewhere

Redirection:

<, >

Pipes

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Pipes
Lots

of Little Tools

INPUT 0
echo

echo Hello | \
wc -c

OUTPUT 1

ERROR 2

A Pipe!
INPUT 0
wc
OUTPUT 1

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

ERROR 2

Email Notification
% echo Message | \
mail s Heres your message \
[email protected]

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Dates
% DATESTRING=`date +%Y%m%d`
% echo $DATESTRING
20060125
% man date

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

FTP the Hard Way


ftp n u server.wfu.edu <<_FTP_
user username password
put FILE
_FTP_

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

FTP with wget


wget

\
ftp://user:[email protected]/file
wget r \
ftp://user:[email protected]/dir/

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

FTP with curl


curl T upload-file \
-u username:password \
ftp://server.wfu.edu/dir/file

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Searching: grep
%
%
%
%
%

grep
grep
grep
grep
grep

rayra /etc/passwd
r rayra /etc
r RAYRA /etc
ri RAYRA /etc
rli rayra /etc

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Searching: find
% find /home/borwicjh \
-name *.lis
[all files matching *.lis]
% find /home/borwicjh \
-mtime -1 name *.lis
[*.lis, if modified within 24h]
% man find
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Searching: locate
% locate .lis
[files with .lis in path]
% locate log
[also finds /var/log/messages]

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Applied Shell Programming

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

Make Your Life Easier


TAB

completion
Control+R
history
cd Study a UNIX Editor

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

pushd/popd
% cd /tmp
% pushd /var/log
/var/log /tmp
% cd ..
% pwd
/var
% popd
/tmp
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Monitoring processes
ps
ps

ef
ps u oracle
ps C sshd
man ps

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

DOS Mode Files


#!/usr/bin/bash^M
FTP

transfer in ASCII, or
dos2unix infile > outfile

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

sqlplus
JOB=ZZZTEST
PARAMS=ZZZTEST_PARAMS
PARAMS_USER=BORWICJH
sqlplus $BANNER_USER/$BANNER_PW << _EOF_
set serveroutput on
set sqlprompt ""
EXECUTE WF_SATURN.FZ_Get_Parameters('$JOB',
'$PARAMS', '$PARAMS_USER');
_EOF_
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

sqlplus
sqlplus $USER/$PASS @$FILE_SQL \
$ARG1 $ARG2 $ARG3
if [ $? ne 0 ]
then
exit 1
fi
if [ -e /file/sql/should/create ]
then
[use SQL-created file]
fi

Ask Amy Lamy!


www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Passing Arguments
% cat > test.sh <<_TEST_
echo Your name is \$1 \$2
_TEST_
% chmod +x test.sh
% ./test.sh John Borwick ignorethis
Your name is John Borwick
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

INB Job Submission Template


$1: user ID
$2: password
$3: one-up number
$4: process name
$5: printer name
% /path/to/your/script $UI $PW \
$ONE_UP $JOB $PRNT
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Scheduling Jobs
%
0
0
*
0
%
%

crontab -l
0 * * * daily-midnight-job.sh
* * * * hourly-job.sh
* * * * every-minute.sh
1 * * 0 1AM-on-sunday.sh
EDITOR=vi crontab e
man 5 crontab
www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

Other Questions?
Shells

and Shell Scripts

bash
Running

Commands
bash and Banner in Practice

www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-

You might also like