[net.sources] std.sh: a standard shell script skeleton

ken@turtlevax.UUCP (Ken Turkowski) (03/01/85)

Hello, you hackers who enjoyed my previous standard C program,
stdmain.c.  I now bring you a standard /bin/sh script.  It is
basically an argument parser, and will accept arbitrary argument
formats:

	std -a -l -x -th0 -o outfile -
	std -alxth0 -ooutfile

and related permutations can parse as:

	-a
	-l
	-x
	-t with argument h0
	-o with argument outfile
	-

just like stdmain.c.  Convert all of your shell scripts now, so you
don't need to remember whether the -o arument should be attached or
not!

-----------------------------------------------------------------

# This is a shell archive.  Remove anything before this line, then
# unpack it by saving it in a file and typing "sh file".  (Files
# unpacked will be owned by you and have default permissions.)
#
# This archive contains:
# std.sh

echo x - std.sh
cat > "std.sh" << '//E*O*F std.sh//'
#! /bin/sh
verbose=false
files=
for arg			# Look for flags
do	while true
	do	case $arg in
		-)	echo NULL FLAG; break ;;
		-v*)	verbose=true ;;
		-o*)	outfile=`expr $arg : '-.\(.*\)'` || outfile=UNKNOWN
			break ;;
		-*)	echo Unknown flag: \"$arg\"
			unkflag="$unkflag $arg"
			break ;;
		*)	case UNKNOWN in
			$outfile)	outfile=$arg ;;
			*)		files="$files $arg" ;;
			esac
			break ;;
		esac
		arg=-`expr "$arg" : '-.\(.*\)'` || break
	done
done

set x $files
shift
for arg		# input file processing template
do
	$verbose && echo processing file \"$arg\"
done

# The following is just for testing this standard script
echo '
Argument' analysis to $0:
echo Flags: -v = $verbose, -o = \"$outfile\"
echo Unknown flags: $unkflag
echo Files: $files
//E*O*F std.sh//

exit 0
-- 

Ken Turkowski @ CADLINC, Menlo Park, CA
UUCP: {amd,decwrl,nsc,seismo,spar}!turtlevax!ken
ARPA: turtlevax!ken@DECWRL.ARPA