User Tools

Site Tools


linux:basic-bash-logic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

linux:basic-bash-logic [2019/01/21 11:12] (current)
seanburns created
Line 1: Line 1:
 +<markdown>
 +# Bash logic
 +## Date: Mon Sep 24 11:03:02 EDT 2018
  
 +## Basic Bash scripting and logic examples
 +
 +Use the help command to get help:
 +
 +```bash
 +$ help [[
 +$ help [
 +$ help test
 +```
 +
 +## Testing
 +
 +Test true if file exists:
 +
 +```bash
 +#!/bin/bash
 +if [[ -a "example.txt" ]] ; then
 + echo "it exists"
 +else
 +  echo "it doesn't exist"
 +fi
 +```
 +
 +Test true if string 'b' sorts after string 'a':
 +
 +```bash
 +#!/bin/bash
 +if [[ b > a ]] ; then
 +  echo "True"
 +else
 +  echo "False"
 +fi
 +```
 +
 +Test true if integer 4 is greater than 5.
 +
 +```bash
 +#!/bin/bash
 +if [[ 4 -gt 5 ]] ; then
 +  echo "four is greater than five"
 +  echo "Creating file four.txt"
 +  touch four.txt
 +  sleep 1
 +  echo "..."
 +  sleep 1
 +  echo "..."
 +  sleep 1
 +  echo "file four.txt was created"
 +else
 +  echo "four is less than five"
 +  echo "Creating file five.txt"
 +  touch five.txt
 +  sleep 1
 +  echo "..."
 +  sleep 1
 +  echo "..."
 +  sleep 1
 +  echo "file five.txt was created"
 +fi
 +```
 +
 +## For Loops
 +
 +Simple loop from 1 to 10:
 +
 +```bash
 +#!/bin/bash
 +for i in $(seq 1 10) ; do
 + echo "$i"
 +done
 +```
 +
 +## While Loops
 +
 +Print loop until less than 10:
 +
 +```bash
 +#!/bin/bash
 +i=0
 +while [[ "$i" -lt 10 ]]
 +do
 + echo "$i"
 + ((i++))
 +done
 +```
 +
 +Note that, if done on the command line and not from a script file, "$i" 
 +is now equal to 10. Otherwise, you will have to reinitialize it.
 +
 +Print loop until greater than 0:
 +
 +```bash
 +#!/bin/bash
 +i=10
 +while [[ "$i" -gt 0 ]]
 +do
 + echo "$i"
 + ((i--))
 +done
 +```
 +
 +## Until Loops
 +
 +Print loop until i = 10:
 +
 +```bash
 +#!/bin/bash
 +i=0
 +until [[ "$i" -eq 10 ]]
 +do
 + echo "$i"
 + ((i++))
 +done
 +```
 +
 +## Nesting
 +
 +List only directories in current directory:
 +
 +```bash
 +#!/bin/bash
 +for i in * ; do
 +  if [[ -d "$i" ]] ; then
 + echo "$i"
 + fi
 +done
 +```
 +
 +List only files in current directory:
 +
 +```bash
 +#!/bin/bash
 +for i in * ; do
 +  if [[ -f "$i" ]] ; then
 + echo "$i"
 + fi
 +done
 +```
 +
 +## Case statements
 +
 +```bash
 +#!/bin/bash
 +
 +printf "\nPick a number 1-4: \n"
 +
 +read ANSWER
 +
 +case $ANSWER in
 +  1)
 +    printf "\nPrinting first option.\n\n"
 +    ;;
 +  2)
 +    printf "\nPrinting second option.\n\n"
 +    ;;
 +  3)
 +    printf "\nPrinting third option.\n\n"
 +    ;;
 +  4)
 +    printf "\nPrinting fourth option.\n\n"
 +    ;;
 +  *)
 +    printf "\nNot an option.\n\n"
 +    exit
 +    ;;
 +esac
 +```
 +
 +## Select statements
 +
 +```bash
 +#!/bin/bash
 +
 +options="Hello Goodbye"
 +
 +select i in $options ; do
 +  if [[ "$i" = "Hello" ]] ; then
 +    echo "Hi Back!"
 +  elif [[ "$i" = "Goodbye" ]] ; then
 +    echo "Goodbye!"
 +    exit
 +  else
 +    echo "It's like goodbye -- you still exit."
 +    exit
 +  fi
 +done
 +```
 +</markdown>
linux/basic-bash-logic.txt ยท Last modified: 2019/01/21 11:12 by seanburns