Variables

Declaration

name=value # no space around '=' sign
student="Sarah"

Parameter expansion

${name} # reference a parameter
echo "Hello ${student}"

Shell variable

uppercase by convention

PATH      # folder to search for executable
HOME      # absolute path to user home directory
USER      # name of current user
HOSTNAME  # name of the computer
HOSTTYPE  # type of processor architecture
PS1       # prompt string 1

Parameter expansion trick

${var_name,}    # first character to lower case
${var_name,,}   # all characters to lower case
${var_name^}    # first character to upper case
${var_name^^}   # all characters to upper case
${#var_name}    # get length of the variable
#
${var_name:offset:length}
${var_name:0:7} # get 7 character starting from the beginning   
${var_name:3:0} # get everything to the right starting from inedex 3
${var_name: -3:2} # offset is 3rd from last, and take 2 characters
        #  ^ space here
${var_name: -3} # offset is 3rd from last, and take everything
Tilde Expansion
~ # short cut for $HOME
$PWD
~+ # shortcut for $PWD
$OLDPWD
~- # shortcut for $OLDPWD
cd ~- # switching back and forth
Brace expansion

echo {1,2,3,4,5,6} is the same as echo {1..6}
echo month{1..12}
echo month{01..12}
echo {start..end..step}
echo {1..10..2}

var=12
eval echo month{01..$var}

Positional Parameters

Special Parameters