#!/bin/bash # Yet another version of the "column totaler" script (col-totaler.sh) #+ that adds up a specified column (of numbers) in the target file. # This uses the environment to pass a script variable to 'awk' . . . #+ and places the awk script in a variable. ARGS=2 E_WRONGARGS=65 if [ $# -ne "$ARGS" ] # Check for proper no. of command line args. then echo "Usage: `basename $0` filename column-number" exit $E_WRONGARGS fi filename=$1 column_number=$2 #===== Same as original script, up to this point =====# export column_number # Export column number to environment, so it's available for retrieval. # ----------------------------------------------- awkscript='{ total += $ENVIRON["column_number"] } END { print total }' # Yes, a variable can hold an awk script. # ----------------------------------------------- # Now, run the awk script. awk "$awkscript" "$filename" # Thanks, Stephane Chazelas. exit 0