Difference between revisions of "OPS435 Lecture 8 - Bash"

From CDOT Wiki
Jump to: navigation, search
(Arrays)
m (Andrew moved page OPS435 Lecture 8 to OPS435 Lecture 8 - Bash)
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
 
* [http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html Arrays]
 
* [http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html Arrays]
 
* To get the length of an array: ${#ArrayName[@]}
 
* To get the length of an array: ${#ArrayName[@]}
 +
 +
== In-class examples ==
 +
 +
for.sh:
 +
 +
<source lang="bash">
 +
#!/bin/bash
 +
 +
#for I in `seq 10`
 +
#do
 +
  #echo $I
 +
#done
 +
 +
for ((I=0; $I<10; I++))
 +
do
 +
  echo $I
 +
done
 +
</source>
 +
 +
arrays.sh:
 +
 +
<source lang="bash">
 +
#!/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
 +
</source>
 +
 +
safecopy-shorter.sh:
 +
 +
<source lang="bash">
 +
#!/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/
 +
</source>

Latest revision as of 12:41, 22 August 2017

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/