Debugging Help Needed

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

I am VERY much a neophyte with shell scripting. I am working on the following,

  1. The problem statement, all variables and given/known data:

"Create a script sends an email message to the user specified on the command line if any of the file
systems at more than 60% of capacity. The script should not process special file systems as /proc on
the ce.uml.edu. It should only process file systems which are either locally mounted or are mounted
via NFS.""Create a script sends an email message to the user specified on the command line if any of the file
systems at more than 60% of capacity. The script should not process special file systems as /proc on
the ce.uml.edu. It should only process file systems which are either locally mounted or are mounted
via NFS."

  1. Relevant commands, code, scripts, algorithms:

  2. The attempts at a solution (include all code and scripts):

#!/bin/bash
#  script to send an email message to the user specified on the command line if
# any of the file systems at more than 60% of capacity.

df -H | grep -vE '^Filesystem' | 'none' | awk '{ print $1 " " $5 }' | while read fsout
do
  echo "$fsout"
  partition=$(echo "$fsout" | awk '{ print $2 }' )
  usage=$(echo "$fsout" | awk '{ print $1 }' | cut -d'%' -f1)

  if [ $usage -ge 90 ]
  then
    echo "CRITICAL WARNING!!: Filesystem \"$partition\" at "$usage"% of capacity" |
    mail -s "CRITICAL WARNING!!: Filesystem \"$partition\" at "$usage"% of capacity" emailaddress@student.uml.edu

  elif [ $usage -ge 60 ] && [ $usage -lt 90 ]
  then
    echo "Warning!!: Filesystem \"$partition\" at "$usage"% of capacity" |
    mail -s "Warning!!: Filesystem \"$partition\" at "$usage"% of capacity" emailaddress@student.uml.edu
  fi
done
  1. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
    University Of Massachusetts, Lowell, USA, Michael Richards, Linux/Unix System Administration

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

I am getting these errors:

./fsc.sh: line 4: $'\r': command not found
./fsc.sh: line 16: syntax error near unexpected token `elif'
'/fsc.sh: line 16: `  elif [ $usage -ge 60 ] && [ $usage -lt 90 ]

Any help is greatly appreciated.

It appears your script has Windows style carriage return (CR) characters ( \r ) present, which are messing up things.
These can be removed like this:

tr -d '\r' < oldscript > newscript 

--
Unix/Linux uses LF line endings (Line Feed), while Windows uses CRLF endings (Carriage Return / Line Feed).

We're getting closer.

Now getting

./fsc2.sh: line 11: [: udev: integer expression expected
./fsc2.sh: line 16: [: udev: integer expression expected
tmpfs 1%
./fsc2.sh: line 11: [: tmpfs: integer expression expected
./fsc2.sh: line 16: [: tmpfs: integer expression expected
/dev/dm-0 5%
./fsc2.sh: line 11: [: /dev/dm-0: integer expression expected
./fsc2.sh: line 16: [: /dev/dm-0: integer expression expected
none 0%
./fsc2.sh: line 11: [: none: integer expression expected
./fsc2.sh: line 16: [: none: integer expression expected
none 0%
./fsc2.sh: line 11: [: none: integer expression expected
./fsc2.sh: line 16: [: none: integer expression expected
none 1%
./fsc2.sh: line 11: [: none: integer expression expected
./fsc2.sh: line 16: [: none: integer expression expected
none 1%
./fsc2.sh: line 11: [: none: integer expression expected
./fsc2.sh: line 16: [: none: integer expression expected
/dev/sda1 14%
./fsc2.sh: line 11: [: /dev/sda1: integer expression expected
./fsc2.sh: line 16: [: /dev/sda1: integer expression expected
ce.uml.edu:/users/ 16%
./fsc2.sh: line 11: [: ce.uml.edu:/users/: integer expression expected
./fsc2.sh: line 16: [: ce.uml.edu:/users/: integer expression expected
ce.uml.edu:/space/ 36%
./fsc2.sh: line 11: [: ce.uml.edu:/space/: integer expression expected
./fsc2.sh: line 16: [: ce.uml.edu:/space/: integer expression expected

Will quotations around $usage and or the number eliminate these errors?

usage=$(echo "$fsout" | awk '{ print $1 }' | cut -d'%' -f1)

If this is correct ( syntax...), it doesnt make the value an integer... thus the error
e.g. in ksh, I would use let

Sure | 'none' | is a valid command?
In lieu of your while read fsout you could read individual variables and get rid of many of your conversions / extractions.
Sure usage is $1 ?

I added the let that you suggested and got this:

udev 1%
tmpfs 1%
/dev/dm-0 5%
./fsc.sh: line 9: let: usage=/dev/dm-0: syntax error: operand expected (error token is "/dev/dm-0")
none 0%
none 0%
none 1%
none 1%
/dev/sda1 14%
./fsc.sh: line 9: let: usage=/dev/sda1: syntax error: operand expected (error token is "/dev/sda1")
ce.uml.edu:/users/ 16%
./fsc.sh: line 9: let: usage=ce.uml.edu:/users/: syntax error: invalid arithmetic operator (error token is ".uml.edu:/users/")
ce.uml.edu:/space/ 36%
./fsc.sh: line 9: let: usage=ce.uml.edu:/space/: syntax error: invalid arithmetic operator (error token is ".uml.edu:/space/")

---------- Post updated at 01:50 PM ---------- Previous update was at 01:46 PM ----------

Honestly, not sure of much at this point. I've gone so many different directions with this I don't recall what lead me from one decision to another.

The script currently looks like this

#!/bin/bash
#  script to send an email message to the user specified on the command line if
# any of the file systems at more than 60% of capacity.

df -H | grep -vE '^Filesystem | none' | awk '{ print $1 " " $5 }' | while read -r fsout
do
  echo "$fsout"
  partition=$(echo "$fsout" | awk '{ print $2 }' )
  let usage=$(echo "$fsout" | awk '{ print $1 }' | cut -d'%' -f1)

  if [ "$usage" -ge "90" ]
  then
    echo "CRITICAL WARNING!!: Filesystem \"$partition\" at \"$usage\"% of capacity" | \
    mail -s "CRITICAL WARNING!!: Filesystem \"$partition\" at \"$usage\"% of capacity" emailaddress@student.uml.edu

  elif [ "$usage" -ge "60" ] && [ "$usage" -lt "90" ]
  then
    echo "Warning!!: Filesystem \"$partition\" at \"$usage\"% of capacity" | \
    mail -s "Warning!!: Filesystem \"$partition\" at \"$usage\"% of capacity" emailaddress@student.uml.edu
  fi
done

---------- Post updated at 02:04 PM ---------- Previous update was at 01:50 PM ----------

Thank you! No, usage was not 1, it was two. Working now!

Glad our clues helped you out...
Thanks for keeping us informed, and good luck for the future

Thank you again for all of your help. I got an A on this assignment. Thank you for pointing me in the right direction!