back

shell scripting with bash

basic commands

echo prints out what comes after it on a line

tests for equality, existence, etc. to use in control structures

= is the string comparison operator. Note the two spaces, one on either side. Miss these out and bash will complain. Indeed, a="thing" (without the spaces) is the assignment rather than the comparison operator

File related tests: stolen from this shell scripting tutorial

Usage: if [ -d directory ] ; then echo "directory exists"; fi

control structures

The if statement takes the following form:

if [ condition ];
   echo "do something";
fi

To do if ... else, you need to add a "then"

if [ condition ];
then
   echo "do something";
else
   echo "do something else";
fi

doing mathematics in bash

To compare two integers use

So if [ $a -gt $b ] is true if the value of $a is bigger than the value of $b

To add subtract etc... use subshells. So

$k = $(( $i + $j ))

command line arguments

Using command line arguments in a shell script - the equivalent of argv and argc etc. in c:

consider this script, called cl.sh

#!/bin/bash
echo there are $# arguments to $0: $*
echo the first argument: $1
echo the second argument: $2
echo the third argument: $3
echo here are all the arguments again: $@

which is not very interesting, but shows what's what. Run it with the arguments a b c d and this is the output:

~/bin $ ./cl.sh a b c d
there are 4 arguments to ./cl.sh: a b c d
the first argument: a
the second argument: b
the third argument: c
here are all the arguments again: a b c d
~/bin $