Download presentation
Presentation is loading. Please wait.
Published byOsborn Wright Modified over 9 years ago
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)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.