Presentation is loading. Please wait.

Presentation is loading. Please wait.

CMPSC 60: Week 6 Discussion Originally Created By: Jason Wither Updated and Modified By: Ryan Dixon University of California Santa Barbara.

Similar presentations


Presentation on theme: "CMPSC 60: Week 6 Discussion Originally Created By: Jason Wither Updated and Modified By: Ryan Dixon University of California Santa Barbara."— Presentation transcript:

1 CMPSC 60: Week 6 Discussion Originally Created By: Jason Wither Updated and Modified By: Ryan Dixon University of California Santa Barbara

2 Shell Scripts - Usefulness Mass file modification – Run a program on a set of files Rename a set of files Convert image files from Bitmap to JPEG Backup critical files Tailor command input and output – Create custom filters to dynamically alter text – Generate a composite file combining data from a set of files Simplify sequences of commands

3 Test Evaluate an expression When the expression is true, exits with 0 When false, exits with a non-zero value “test -e filename” == “[ -e filename ]” – if filename exists, exits with 0 “test $var1 = $var2”, “[ $var1 != $var2 ]” – string equality, inequality test

4 More Test [ $i -eq 2 ], [ $i -ne 1 ] – integer equality, inequality test [ $i -lt 20 ], [ $i -le 4 ] – integer Less Than, Less than or Equal test [ $i -gt 0 ], [ $i -ge 5 ] – integer Greater Than, Greater than or Equal test [ ! -d $file ] – NOT a directory = true

5 Test Example An example: for i in `ls` do if [ -d $i ] then echo $i fi done

6 Cut Cut out selected bytes, columns, or fields cut -b10-15 – prints bytes 10-15 of each line in cut -c1-10,20-22 – prints characters 1-10 and 20-22 of each line in cut -f2 – prints the second field of each line in – by default, fields are separated by tabs – the delimiter can be changed from tabs using the -d option

7 Head / Tail Prints the first / last lines of a file head – Prints the first 10 lines of tail -15 – Prints the last 15 lines of tail -2 | head -1 – Prints out only the second to last line of file

8 expr – evaluates math expressions expr 2 + 2 – Outputs 4 – White space around “+” matters Other operations: – + - * / % and more – Note that some operators may need to be escaped to be called from the command line. expr 2 * 2 # Results in an error since “*” is a wild card. expr 2 \* 2 # Correct expression, asterisk is escaped.

9 Shell Scripts - How they start Begins with #! (Sha-Bang) #! is followed by the interpreter to use – #!/bin/sh (what we’ll be doing) – #!/usr/bin/perl – etc… BTW, white-space matters…

10 Shell Scripts - Variables Case-sensitive Created as needed, simply assign to a name – var=3 or var=“Your favorite band” Access by pre-pending with a $ – echo $var (prints out the value of var)

11 Shell Scripts - Variable Manipulation Working with numbers – var=$t + 2 – var=`expr $t+2` (WRONG!!!!!!) Correct Solution

12 Shell Scripts - Quotations Double-quotes – Variables within are resolved If var=“This is cool” echo “$var stuff” Outputs “This is cool stuff” Single-quotes – String is treated literally Echo ‘$var stuff’ Outputs “$var stuff”

13 Shell Scripts - Quotations Back-quotes – Executes quoted command echo “Today’s date is `date`” Prints “Today’s date is Wed May 19…” – var=`ls -l` var now contains the output of the ls -l command

14 Shell Scripts - Conditionals If-statements if test-cmds then commands else commands fi Else portion is optional

15 Shell Scripts - Conditionals Multiple If-statements in a row if test-cmds then commands elif test-cmds then commands else commands fi

16 Shell Scripts - Conditionals Examples if [ $var -gt 0 ] then echo ‘$var is greater than zero’ else echo ‘$var is not greater than zero’ fi

17 Shell Scripts - Loops While-loops while test-cmds do commands done

18 Shell Scripts - Loops For-loops for x in list do commands done

19 Shell Scripts - Loops Example: for x in 1 2 3 4 5 do echo “$x” done Outputs: 1 2 3 4 5

20 Shell Scripts - Loops Example: x=1 while [ $x -le 3 ] do echo “$x” x=`expr $x + 1` done Outputs: 1 2 3

21 Shell Scripts - Loops Example: for x in `ls` do if [ -d $x ] then chmod 750 $x else chmod 640 $x fi done Sets all directories with rwxr-x--- and all other files with rw-r----- permissions

22 Shell Scripts - Exercise Print out the greatest of the variables $1, $2 and $3 (These represent the first 3 command- line arguments passed to the script)


Download ppt "CMPSC 60: Week 6 Discussion Originally Created By: Jason Wither Updated and Modified By: Ryan Dixon University of California Santa Barbara."

Similar presentations


Ads by Google