unix scripting…

27
Unix Scripting… Some General Ramblings…

Upload: quynn-hammond

Post on 30-Dec-2015

37 views

Category:

Documents


1 download

DESCRIPTION

Unix Scripting…. Some General Ramblings…. Quoting. Single quote: ' ... ' The shell ignores all enclosed characters Double quote: " ... " The shell ignores most enclosed characters The shell does interpret $ , ` , and \ Backtick or Lefttick: ` ... ` - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Unix Scripting…

Unix Scripting…

Some General Ramblings…

Page 2: Unix Scripting…

2

Quoting

Single quote: '...' The shell ignores all enclosed characters

Double quote: "..." The shell ignores most enclosed characters The shell does interpret $, `, and \

Backtick or Lefttick: `...` Runs a command output treated as a

variable

Backslash: \ Special treatment for the following character.

Page 3: Unix Scripting…

3

Setting Variables

Setting variables var=value ENVVAR=value export ENVVAR

Note: variables don’t affect parent shells only environmental variables affect child

shells

Page 4: Unix Scripting…

4

Using variables

“$*” - list of all command-line parameters. Bad.“$@” – Good list of all command-line parameters.“$1”, “$2”, …, “$9” – individual command line parameters

Page 5: Unix Scripting…

5

Shell Loops - ifif expr ; then cmd1 ; else cmd2 ; ficmd1 and cmd2 can be complexthe else can be omitted

$ if [ x"$var" = x"yes" ]> then> echo good> figood

if [ x“$var” = x“yes” ] ; then echo good ; fi

Page 6: Unix Scripting…

6

Shell Loops – while, for

while expr do

cmd done

for var in a b c d e do

cmd done

Page 7: Unix Scripting…

7

Shell functions

Act like mini-shell scripts.Can set variables in the current shell.

function-name () {

cmd1cmd2

}

Page 8: Unix Scripting…

8

Using the test Command

The test command makes preliminary checks of the UNIX internal environment and other useful comparisonsPlace the test command inside the shell script or execute it directly from the command lineThe test command can be used to:

Perform relational tests with integers Test strings Determine if a file exists and what type of file it is Perform Boolean tests

Page 9: Unix Scripting…

9

Relational Integer Tests

The test command returns a value known as an exit status, which is a numeric value and indicates the results of the test performed: true if 0 (zero) and false if 1 (one)

Page 10: Unix Scripting…

10

String Tests

Page 11: Unix Scripting…

11

Testing Files

Page 12: Unix Scripting…

12

Testing Files From The Prompt…

$ touch testfile$ ls -l testfile-rw-r--r-- 1 student student 0 Oct 9 11:45 testfile$ test -x testfile$ echo $?1 (Note: 0 = true and 1 = false)$ chmod 700 testfile$ ls -l testfile-rwxr-xr-x 1 student student 0 Oct 9 11:45 testfile$ test -x testfile$ echo $?0$ $ test -f test_file$ echo $?1

Page 13: Unix Scripting…

13

Performing Boolean Tests

AND – returns true (0) if both expressions are true, otherwise returns false (1)

OR – returns true if either expression is true, otherwise if neither is true, returns false

! – negates the value of the expression

Page 14: Unix Scripting…

14

Boolean Tests (testfile1 & testfile2)

touch testfile1test –f testfile1 –a –x testfile2Echo $?touch testfile2test –f testfile1 –a –x testfile2echo $?chmod 777 testfile1echo $?test –f testfile1 –a –x testfile2rm testfile2test –f testfile1 –a –x testfile2

Page 15: Unix Scripting…

15

Script Exercise 1

Write a script that will echo to the screen at least three arguments that you include at the command line when you run the script

Page 16: Unix Scripting…

16

Script Exercise 1 Solution

#!/bin/bashecho $1 $2 $2

Page 17: Unix Scripting…

17

Script Exercise 2

Write a script that will create a file that is named when you execute the shell scripte.g. myshell.sh testfile

Page 18: Unix Scripting…

18

Script Exercise 2 Solution

#!/bin/bashtouch $1# or…echo “testing” > $1# or…> $1# or…ls > $1

Page 19: Unix Scripting…

19

Script Exercise 3

Write a script that will create a file using today’s date and the date format is ddmmmyy.dat

Page 20: Unix Scripting…

20

Script Exercise 3 Solution

#!/bin/bashtouch `date +%d%b%y`.dat# or….FILENAME=`date +%d%b%y`.datTouch $FILENAME# or etc….

Page 21: Unix Scripting…

21

Script Exercise 4

Write a script that will ask the user for to input a file name and then create the file and echo to the screen that the file name inputted had been created

Page 22: Unix Scripting…

22

Script Exercise 4 Solution

#!/bin/bashclearecho ‘enter a file name: ‘read FILENAMEtouch $FILENAMEecho “$FILENAME has been created”

Page 23: Unix Scripting…

23

Script Exercise 5

Now take the script from exercise 4 and write it so it will not create a file if no input is received

Page 24: Unix Scripting…

24

Script Exercise 5 Solution#!/bin/bashclearecho ‘Enter a file name: ‘read FILENAMEif [ ! –z $FILENAME ] ; then

touch $FILENAMEecho “$FILENAME has been created”

elseecho “You did not enter a file name.”

fi

Page 25: Unix Scripting…

25

Script Exercise 6

Write a script that asks for the users favorite color then if it is not “red” inform them that is the wrong answer, wait 3 seconds, clear the screen and ask the question again.

Page 26: Unix Scripting…

26

Script Exercise 7

Ask the user to enter multiple entries (name, age, sex and favorite color) one at a time. Then echo those answers back to the screen.

Page 27: Unix Scripting…

27

Script Exercise 8

Modify the script in exercise 7 to write the responses to a file named “ddmmyy.dat” one answer per line.