Slide 1

Slide 1 text

Shell Scripting

Slide 2

Slide 2 text

Why shell?

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

What is it?

Slide 5

Slide 5 text

.sh

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

chmod 777 script.sh

Slide 8

Slide 8 text

chmod 666 script.sh 666

Slide 9

Slide 9 text

chmod 755 script.sh

Slide 10

Slide 10 text

./script.sh

Slide 11

Slide 11 text

bash script.sh

Slide 12

Slide 12 text

sh script.sh

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Initialization

Slide 15

Slide 15 text

#!/bin/ Initialization bash sh csh zsh bash

Slide 16

Slide 16 text

#!/bin/ Initialization bash

Slide 17

Slide 17 text

#!/bin/bash dest_folder=$1 …

Slide 18

Slide 18 text

$./backup.sh ~/ /mnt/bac

Slide 19

Slide 19 text

$./backup.sh ~/ /mnt/bac $1 $2

Slide 20

Slide 20 text

$./backup.sh ~/ /mnt/bac $1 $2

Slide 21

Slide 21 text

$./backup.sh ~/ /mnt/bac $1 $2 $0

Slide 22

Slide 22 text

$echo $0

Slide 23

Slide 23 text

$echo $0 -bash

Slide 24

Slide 24 text

#!/bin/bash dest_folder=$1 backup_folder=$2 …

Slide 25

Slide 25 text

… #unique backup ID’s day=$(date “+%y%m%d”) host=$(hostname -s) …

Slide 26

Slide 26 text

… #archive file name archive=“$host-$day.tgz” …

Slide 27

Slide 27 text

… #print start message echo “$0: Backing up $backup_folder to $dest_folder…” date echo …

Slide 28

Slide 28 text

… #compress files using tar tar czvf “$dest_folder/$archive” $backup_folder …

Slide 29

Slide 29 text

… #print completion message echo echo “Backup complete!” echo ls -lh $dest_folder

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Improvements

Slide 32

Slide 32 text

If Statement

Slide 33

Slide 33 text

#!/bin/bash #check for arguments if [[ $# -lt 2 ]] ; then echo "$0: illegal number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 34

Slide 34 text

#!/bin/bash #check for arguments if [[ $# -lt 2 ]] ; then echo "$0: illegal number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 35

Slide 35 text

#!/bin/bash #check for arguments if [[ $# -lt 2 ]] ; then echo "$0: illegal number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 36

Slide 36 text

#!/bin/bash #check for arguments if [ “$#” -lt 2 ] ; then echo "$0: illegal number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 37

Slide 37 text

#!/bin/bash #check for arguments if [[ $# -lt 2 ]] ; then echo "$0: illegal number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 38

Slide 38 text

#!/bin/bash #check for arguments if [[ $# -lt 2 ]] then echo "$0: illegal number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 39

Slide 39 text

#!/bin/bash #check for arguments if [[ $# -lt 2 ]] ; then echo "$0: number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 40

Slide 40 text

#!/bin/bash test $# -lt 2 && (echo not enough arguments)

Slide 41

Slide 41 text

#!/bin/bash test $# -lt 2 && (echo not enough arguments)

Slide 42

Slide 42 text

#!/bin/bash test $# -lt 2 && (echo not enough arguments)

Slide 43

Slide 43 text

#!/bin/bash test $# -lt 2 | | (echo valid num of arguments)

Slide 44

Slide 44 text

#!/bin/bash #check for arguments if [[ $# -lt 2 ]] ; then echo "$0: illegal number of params" echo "usage: [dest folder] [backup dirs...]" exit 1 fi …

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

For Loop

Slide 47

Slide 47 text

… create_backup () { #archive file name archive="$host-$day-$1.tgz" #print start message echo echo "Backing up $1 to $dest_folder/$archive” echo #compress files using tar tar czvf "$dest_folder/$archive" "$1" } …

Slide 48

Slide 48 text

… create_backup () { #archive file name archive="$host-$day-$1.tgz" #print start message echo echo "Backing up $1 to $dest_folder/$archive” echo #compress files using tar tar czvf "$dest_folder/$archive" "$1" } …

Slide 49

Slide 49 text

… count=0 for folder in "$@"; do test $count -eq 0 | | (create_backup $folder) count+=1 done …

Slide 50

Slide 50 text

… count=0 for folder in "$@"; do test $count -eq 0 | | (create_backup $folder) count+=1 done …

Slide 51

Slide 51 text

… count=0 for folder in “$@" do test $count -eq 0 | | (create_backup $folder) count+=1 done …

Slide 52

Slide 52 text

… count=0 for folder in "$@"; do test $count -eq 0 | | (create_backup $folder) count+=1 done …

Slide 53

Slide 53 text

… count=0 for folder in "$@"; do test $count -eq 0 | | (create_backup $folder) count+=1 done …

Slide 54

Slide 54 text

… count=0 for folder in "$@"; do test $count -eq 0 | | (create_backup $folder) count+=1 done …

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

Control Structure Other

Slide 57

Slide 57 text

While loop

Slide 58

Slide 58 text

count=0 while [[ $count -lt 10 ]]; do echo “count = $count” done

Slide 59

Slide 59 text

cases

Slide 60

Slide 60 text

time=$(date “+%H”) case $time in [6-10]) echo “morning”;; [11-5]) echo “day”;; [6-10]) echo “evening”;; *) echo “night”;; esac

Slide 61

Slide 61 text

Thanks! Jason Merlo