Bash Examples
exit immediately on error
Add set -e
as the first line of your script, so it will exit as soon as a command returns a non-zero status (error).
This means you won’t need to keep checking for return codes.
Control
if statement
See if control block
while loop
The below busy wait tests for the existence of a file named lockfile
every 2 seconds. When it exists, the script will
continue out of the loop.
while [[ ! -a lockfile ]];
do
echo waiting for 2 seconds
sleep 2
done
for each line
For each line in a file
while read line; do echo line; done < inputfile.txt
for loop
for arg in one two three
do
echo $arg
done
List all arguments to the current script
for arg in $@
do
echo $arg
done
bash logic tests
Bash provides conditional expressions that can be used as tests as part of if statements.
You can find documentation from the command line under info bash
-> Bash Features -> Bash Conditional Expressions
String Comparison
-z $FOO
returns true if the length of FOO is zero.
$A != $B
returns true if strings are not equal.
-n $FOO
returns true if length is non-zero.
File tests
-a repair.lock
tests for the existence of repair.lock
Logic operators
-o
represents logical or. Use it to combine two conditionals together
if [ $IORUNNING != "Yes" -o $SQLRUNNING != "Yes" ]
Integer comparison
This is useful for checking return codes
if [ $result -ne 0 ]
then
echo failed with code: $result
fi
backticks
You can use the text output of one program for the input of another. You can also assign the text output to a different variable
dir=/a/b/c
basedir=`basename $dir`
echo $basedir
# this will output 'c'
An alternative to backticks is $()
dir=/a/b/c
basedir=$(basename $dir)
echo $basedir
# this will output 'c'
Find examples
permissions
perm
will test file permissions.
To find all files that everyone (all) can read
find -type f -perm -a+r
To find all files that not everyone can read
find -type f ! -perm -a+r
To find all files that have permission 644 or more permissive
find -type f -perm -644