Using global environment variables inside a subshell

Lowell Gilbert freebsd-questions-local at be-well.ilk.org
Wed Oct 1 20:48:37 UTC 2008


Steve Bertrand <steve at ibctech.ca> writes:

> I've fudged together a quick disk space monitor that I will run from
> cron. Running the script works fine from the command line, but when I
> run it from cron, the environment variable is empty.
>
> Can someone point out the err of my ways?:
>
> #!/bin/sh
>
> /bin/df | \
> /usr/bin/awk '{if($5 ~ "%" && $6 !~ "proc") {used=$5} else {used=""}; \
> sub(/%/, "", used); \
> if(used > 95) print $6 " is at " used"% on "ENVIRON["HOSTNAME"]"!"}' | \
> mail -s "Disk usage action required" email at addr.com

The environment under which cron jobs are run is very spare.  It's
more or less limited to the variables that are listed in the
crontab(5) manual.  You need to get the value into your script another
way.  In this case, I would use hostname(1).

-- 
Lowell Gilbert, embedded/networking software engineer, Boston area
		http://be-well.ilk.org/~lowell/


More information about the freebsd-questions mailing list