#!/bin/sh ### Bourne shell script to print out an excuse from the BOFH excuse file. ### Suitable for login messages, email signatures, etc. Knock yourself out. ### ### usage: bofh.sh [ excuse file ] ### ### If an excuse file isn't specified on the command line, it looked for ### "excuses.txt" in the current directory. But look, I really think you ### can figure this out for yourself. ### ### The original BOFH Excuse Server homepage: ### . http://www.cs.wisc.edu/~ballard/bofh/ ### ### Where this file came from: ### . http://yoyo.org/~pgl/bofh/ ### ### ### - Tue Jun 25 20:43:06 BST 2002 ### Peter Lowe, pgl@instinct.org ### # default excuse file to look for defaultexcusefile='./excuses.txt' # check for the excuse file if [ $1 ] then if [ ! -f $1 ] then # duh echo "Can't find $1!" exit 1; else excusefile=$1 fi elif [ -f $defaultexcusefile ] then excusefile=$defaultexcusefile else # is this _really_ necessary? me=$(basename $0) cat <<-EOUSAGE Usage: $me [ excuse file ] If an excuse file is not specified on the command line, it is assumed to be $defaultexcusefile. EOUSAGE exit 1 fi # get the number of excuses as a maximum value to use for the random number numexcuses=$(wc -l $excusefile) numexcuses=${numexcuses%% $excusefile} # I suppose this may be a bit over the top [ $numexcuses ] || { cat <<-EOERR Erm. Seems something went wrong. Does the file "$excusefile" _really_ have 0 lines? EOERR exit 1 } # terrible, but it'll do (famous last words) randline=$(($(date +%M%S) * $$ % $numexcuses)) # print out the excuse head -n $randline "$excusefile" | tail -1