Variables
Basis
myVar=myValue
Assign a value to the variable (warning, no space!).myVar=$(whoami)
Assign command output to the variable.$myVar
Access variable content.
Array
myArray=()
Create an empty array.myArray=( 12 12 )
Create an array with values (note the space between values).
myArray[0]=myValue
Assign a value to the first value of the array.myArray+=(myValue)
Append value at the end of the array (add a value).
${myArray[0]}
Return the first value of the array.${myArray[@]}
Return the whole array.${myArray[3:@]}
Return the values form third to last.${#myArray[@]}
Return the array size.
Special Variables
$?
Output code of previously executed program.
$0
Path of the currently called script.$1, $2 ...
Arguments passed to the script.$#
Arguments numbers.$@
Return all the arguments.
date
Return date, time, and time difference.date "+%H"
Return the current hour. (%H= hour,%M= minute,%S= second, …).
seq 1 12
Return a number sequence.
Structures
Condition
if [ boolean ]
then
...
elif
then
...
else
...
fi

For Loop
for i in `seq 0 100`
do
...
done
for i in {1..100}
do
...
done
directories=( myDir1 myDir2 myDir3)
for directory in "${directories[@]}"; do
mkdir -p $directory
...
done
While Loop
# Read lines for file
while read line
do
echo $line
done < myFile
while read line; do echo $line; done < myFile.txt
One liner version of while loop to read file.
Redirections
Chevrons
>
Redirects to a file (if it already exists, it will be overwritten).>>
Redirects to the end of a file (if it doesn't exist, it will be created).
2>
Redirects errors to a file (if it already exists, it will be overwritten).2>>
Redirects errors to the end of a file (if it doesn't exist, it will be created).2>&1
Redirects errors in the standard output.
< myFile
Sends a file as a input command.KEYWORD <<
Switches the console to keyboard input mode, line by line. All the lines will be sent when the end keyword has been written.<<< myString
Sends a string as a input command.
Ampersand
cmd1 & cmd2
First command will be executed in background.cmd1 && cmd2
Second command is executed if the first command return code is 0 (ok).
Pipe
cmd1 | cmd2
Chains commands (output from command 1 is sent to command 2).cmd1 || cmd2
Second command is executed if the first command return code is not 0 (error).
