User Tools

Site Tools


classnotes:rh134:bash

Write Simple Bash Scripts

in vim enable line numbering with

 esc
:set nu 

using awk awk is used to get bits of files for example

awk -F: `{print $1}` 

prints out the first entry (from the $1) of a file that uses : as a separator

Loops

for

The structure is

 
for VAR in list of space separated items; do action $VAR; done 

Examples

For HOST in server a server; do echo $HOST; done

For HOST in server{a,b}; do echo $HOST; done

For HOST in server{a..b}; do echo $HOST; done

These all do the same thing

if

if statements use following structure

if <CONDITION>; then
      <STATEMENT>
      ...
      <STATEMENT>
else
      <STATEMENT>
      ...
      <STATEMENT>
fi

Conditions are from command test

[user@host ~]$ [[ 1 -eq 1 ]]; echo $?
0
[user@host ~]$ [[ 1 -ne 1 ]]; echo $?
1
[user@host ~]$ [[ 8 -gt 2 ]]; echo $?
0
[user@host ~]$ [[ 2 -ge 2 ]]; echo $?
0
[user@host ~]$ [[ 2 -lt 2 ]]; echo $?
1
[user@host ~]$ [[ 1 -lt 2 ]]; echo $?
0
The following examples demonstrate the Bash string comparison operators:

[user@host ~]$ [[ abc = abc ]]; echo $?
0
[user@host ~]$ [[ abc == def ]]; echo $?
1
[user@host ~]$ [[ abc != def ]]; echo $?
0

while

will run a a command while a condition is meet.

here is an interesting example

while ! test -f test_file; do sleep 1s; done 

this checks to see if a file called test_file exists if it does the while loop exits if not it keeps running

case

Case is a comparison of input with know conditions

here is an example

read -p "give me an animal:" animal

case $animal in

   person)
        echo -e " aperson has 2 legs \n"
        
    ;;
    
    cat)
        echo -e "a cat has 4 lets \n"
    ;;
    
    *) 
        ech0 -e "this covers all other conditions \n"
        exit 1
    ;;
 esac

Regex

classnotes/rh134/bash.txt · Last modified: by 127.0.0.1