NOTE: Spacing is very important on the IF statement line.
#!/bin/bash if [ true ]; then echo "Always true" fi # -------------------- OR -------------------- # You can also move then down as follows. if [ 1 ] then echo "Always true" fi
#!/bin/bash str_1="String 1" str_2="String 2" if [ "$str_1" = "$str_2" ]; then echo "Both strings are equal." else echo "Both strings are not equal." fi
# If file exists if [ -f testfile ] then echo testfile exists! fi # If file doesn't exist if [ ! -f /tmp/foo.txt ]; then echo "File not found!" fi # For directory, us -d instead of -f.
# If no argument, display error message and exit script. if [ $# -eq 0 ]; then echo "ERROR: Year argument is missing! Supply year argument to the batch file." exit 1; fi
# Don't encapsulate IF condition within  if echo `uname -m` | grep -q "x86_64" then echo "64-bit" else echo "32-bit" fi
Bash File Testing -b filename - Block special file -c filename - Special character file -d directoryname - Check for directory existence -e filename - Check for file existence, regardless of type (node, directory, socket, etc.) -f filename - Check for regular file existence not a directory -G filename - Check if file exists and is owned by effective group ID. -g filename - true if file exists and is set-group-id. -k filename - Sticky bit -L filename - Symbolic link -n string is not null -O filename - True if file exists and is owned by the effective user id. -r filename - Check if file is a readable -S filename - Check if file is socket -s filename - Check if file is nonzero size -u filename - Check if file set-user-id bit is set -w filename - Check if file is writable -x filename - Check if file is executable http://www.tldp.org/LDP/abs/html/fto.html http://www.tldp.org/LDP/abs/html/ops.html
Expressions table: TODO