Search⌘ K
AI Features

Script Parameters

Explore how to use positional parameters in Bash scripts to make flexible backup scripts. Understand how to pass input paths as parameters, the importance of quoting variables to handle spaces, and how to manage archive filenames to prevent overwriting previous backups. This lesson helps you write scripts that work with any directory, improving script reusability and reliability.

Parametrizing the photo directory

Let’s suppose we moved our photos from the ∼/photo directory to ∼/Documents/Photo. If we want to support the new path in the backup script, we should change its code. The following shows how the new script looks:

#!/bin/bash

tar -cjf ~/photo.tar.bz2 ~/Documents/Photo &&
  echo "tar - OK" > results.txt ||
  { echo "tar - FAILS" > results.txt ; exit 1 ; }

cp -f ~/photo.tar.bz2 ~/backup &&
  echo "cp - OK" >> results.txt ||
  ! echo "cp - FAILS" >> results.txt

Every time we move the photos from one directory to another, we have to change the script. This is inconvenient. A better solution is to make a universal script that can handle any directory. Such a script would receive the path to photos as an input parameter.

When we run a Bash script, we can pass command-line parameters there. This works the same way as for any GNU utility. We specify the parameters separated by a space after the script name. Bash will pass them to the script. Here is an example:

./photo-backup.sh ~/Documents/Photo

This command runs our script with the ...