Bash Scripting 101

Basics

  • variables
  • functions
  • Loops
  • Conditionals (If statements)
  • taking user input
  • check if a user is root
  • check if a file or directory already exists
  • colouring the output
  • writing and redirecting data
  • find your IP address
  • find your hostname
  • check if a package is already installed
  • check if package dependencies are met
  • how to make a link clickable
  • exit if unmet dependencies/deps can’t be installed
  • exit statuses (0-255, $?)
  • $? exit status of last command
  • logging
  • wildcards
  • looping over multiple arguments

echo

  • When using echo -e use double quotation marks or it won’t work.
  • When using variables inside a string, you need to encapsulate the string in double quotation marks
  • When using If statements, always wrap your variables in double quotation marks “” to account for spaces in file/dir names
  • Use \n in the beginning to give a line break between your response text and the command output
  • http://stackoverflow.com/questions/13617843/unary-operator-expected
  • you can check for exit statuses of multiple commands with ||. This can be used where you are unsure of which OS will be running the command

Find external IP

SERVER_IP=`dig +short myip.opendns.com @resolver1.opendns.com` # External IP of the server

Multiple commands on the same line

You can put multiple commands on the same line by separating them with a semicolon ;

For example

if [ “$?” -eq “0” ]; then
  # do something
fi

Make script executable

chmod +x foo.sh