select.sh revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This software is part of the ast package #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Copyright (c) 1982-2007 AT&T Knowledge Ventures #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and is licensed under the #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Public License, Version 1.0 #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# by AT&T Knowledge Ventures #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# A copy of the License is available at #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# http://www.opensource.org/licenses/cpl1.0.txt #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Information and Software Systems Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Florham Park NJ #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# David Korn <dgk@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfunction err_exit
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin print -u2 -n "\t"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin print -u2 -r ${Command}[$1]: "${@:2}"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin let Errors+=1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinalias err_exit='err_exit $LINENO'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinCommand=${0##*/}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininteger Errors=0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintrap "rm -f /tmp/Sh$$*" EXIT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinPS3='ABC '
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincat > /tmp/Sh$$.1 <<\!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin1) foo
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin2) bar
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin3) bam
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinselect i in foo bar bam
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindo case $i in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin foo) break;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) err_exit "select 1 not working"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin break;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin esac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindone 2> /dev/null <<!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinunset i
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinselect i in foo bar bam
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindo case $i in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin foo) err_exit "select foo not working" 2>&3
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin break;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) if [[ $REPLY != foo ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then err_exit "select REPLY not correct" 2>&3
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin fi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ( set -u; : $i ) || err_exit "select: i not set to null" 2>&3
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin break;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin esac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindone 3>&2 2> /tmp/Sh$$.2 <<!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfoo
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinexit $((Errors))