Open main menu

CDOT Wiki β

OPS435 Lecture 8 - Bash

Arrays

  • for (( )) loop
  • Arrays
  • To get the length of an array: ${#ArrayName[@]}

In-class examples

for.sh:

#!/bin/bash

#for I in `seq 10`
#do
  #echo $I
#done

for ((I=0; $I<10; I++))
do
  echo $I
done

arrays.sh:

#!/bin/bash

#COLOUR1=red
#COLOUR2=green
#COLOUR3=blue

COLOURS=("red" "light green" "blue" "orange" "indigo")

#echo ${COLOURS[1]}
#echo ${COLOURS[*]}

#for ((INDEX=0; $INDEX<3; INDEX++))
for ((INDEX=${#COLOURS[@]} - 1; $INDEX >= 0; INDEX--))
do
  echo "Array value at index $INDEX is ${COLOURS[$INDEX]}"
done

safecopy-shorter.sh:

#!/bin/bash

COPYTODIR=$1

# Not valid characers in a filename:
# < > : " / \ | ? *
isValidFilename()
{
  BADCHARS=('<' '>' ':' '"' '/' '\\' '|' '?' '*')
  NAME=$1
 
  for ((INDEX=0; $INDEX<${#BADCHARS[@]}; INDEX++))
  do
    #echo "See if $NAME contains ${BADCHARS[$INDEX]}"
   
    if echo $NAME | grep ${BADCHARS[$INDEX]} > /dev/null
    then
      return 1
    fi
  done
 
  return 0
}

for FILE in *
do
  if isValidFilename "$FILE"
  then
    echo "$FILE is good"
  else
    echo "$FILE is bad"
  fi
done

#cp -v $COPYFROMDIR/* $COPYTODIR/