weird output

Please support our Shell Scripting advertiser: Programming Forums - DaniWeb Sister Site
Thread Solved

Join Date: Nov 2007
Posts: 227
Reputation: k2k is an unknown quantity at this point 
Solved Threads: 0
k2k k2k is offline Offline
Posting Whiz in Training

weird output

 
0
  #1
Nov 10th, 2008
I had a similar script in solaris and it had no problem. I wrote this one in freeBSD and it gave me strange output. Can anyone please tell me why? thanks a lot

Shell Scripting Syntax (Toggle Plain Text)
  1. #!/bin/sh
  2. #This is a shell script that checks file system capacity mounted on /home directory
  3. #If file system is over 90% capacity, this shell script will generate notification emails sending to all users
  4.  
  5. warning()
  6. {
  7. fs=$1 # first argument is the file system name
  8. fscap=$2 # second argument is the file system's capacity
  9.  
  10. for user in `ls /home`
  11.  
  12. do
  13. echo "File system mounted on /home directory is over 90% capacity. Please be ready for system maintainance. " | mail -s "Warning! $fs here is at $fscap capacity" user
  14.  
  15. done
  16.  
  17. echo "Warning: $fs is at $fscap capacity"
  18. }
  19.  
  20. daOslg= `df -h | sed -n '/home/p' | tr -s ' ' ' ' | cut -d' ' -f1`
  21. daOslgCap= `df -h | sed -n '/home/p' | tr -s ' ' ' ' | cut -d' ' -f5`
  22.  
  23. if ["$daOslgCap" -gt "90%"]
  24. then
  25. warning $daOslg $daOslgCap
  26. fi
  27.  

output:
Shell Scripting Syntax (Toggle Plain Text)
  1.  
  2. $ ./capChecker
  3. ./capChecker: /dev/da0s1g: Permission denied
  4. 0%: not found
  5. [: missing ]
Reply With Quote Quick reply to this message  
Join Date: Oct 2007
Posts: 399
Reputation: eggi will become famous soon enough eggi will become famous soon enough 
Solved Threads: 47
eggi eggi is offline Offline
Posting Whiz

Re: weird output

 
0
  #2
Nov 11th, 2008
Hey there,

I think definitely you'll see some differences in performance. Solaris' sh is the bourne shell and a lot of linux/bsd distro's just like sh to bash or another shell.

The one thing I saw that jumped out at me was:

if ["$daOslgCap" -gt "90%"]

there may be 2 issues with this. Try padding spaces in between the [] and, possibly, check and see if there's an issue with the sense of your "if check", since "90%" is an alpha value and -gt is a unary comparison operator.

to add the spaces:
if [ "$daOslgCap" -gt "90%" ]
for the other part, you should clip the % from your value so you'll be checking if
$daOslgCap -gt 90
Hope that helps you get closer to an answer, if it doesn't answer the whole thing. If you could post the output of :

/bin/sh -x capChecker
that might shed some more light.

Best wishes,

Mike
Linux and Unix Tips, Tricks and Individual Advice - The Linux and Unix Menagerie!
------------------------------------------------------------------------
The greatest viral marketing idea of all time, get your copy of this Free Report now!
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC