189750Sdwmalone#!/bin/sh 289750Sdwmalone# getans prompt type default results_filename 389750Sdwmalone# type is one of 489750Sdwmalone# number 589750Sdwmalone# integer 689750Sdwmalone# neginteger 789750Sdwmalone# file default=default filename 889750Sdwmalone# path 989750Sdwmalone# yesno default=0,1 corres yes or no 1089750Sdwmalone# string (default) 1189750Sdwmalone 1289750SdwmaloneRAWPMPT=$1 1389750SdwmaloneTYP=$2 1489750SdwmaloneDFLT=$3 1589750SdwmaloneOFNM=$4 1689750Sdwmalone 1789750Sdwmaloneny0="no"; ny1="yes" 1889750Sdwmaloneif [ ${TYP} = "yesno" ]; then 1989750Sdwmalone eval ny=\$ny${DFLT} 2089750Sdwmalone pmpt="${RAWPMPT} [$ny]: " 2124139Sjoergelse 2289750Sdwmalone if [ -z "${DFLT}" ]; then 2389750Sdwmalone pmpt="${RAWPMPT}" 2424139Sjoerg else 2589750Sdwmalone pmpt="${RAWPMPT} [${DFLT}]: " 2689750Sdwmalone fi 2789750Sdwmalonefi 2889750Sdwmaloneif [ x"`echo -n`" = x-n ] 2989750Sdwmalonethen 3089750Sdwmalone c=\\c 3189750Sdwmaloneelse 3289750Sdwmalone n=-n 3389750Sdwmalonefi 3489750Sdwmalone 3589750Sdwmalonewhile : 3689750Sdwmalonedo 3789750Sdwmalone echo $n "$pmpt"$c 3889750Sdwmalone read input 3989750Sdwmalone case "$TYP" in 4089750Sdwmalone number) 4189750Sdwmalone tmp=`echo $input | tr -d 0123456789.` 4289750Sdwmalone if [ -n "$tmp" ]; then 4324139Sjoerg echo "Invalid number. Please try again." 4489750Sdwmalone continue 4589750Sdwmalone fi 4689750Sdwmalone ;; 4724139Sjoerg 4889750Sdwmalone integer) 4989750Sdwmalone tmp=`echo $input | tr -d 0123456789` 5089750Sdwmalone if [ -n "$tmp" ]; then 5124139Sjoerg echo "Invalid integer. Please try again." 5289750Sdwmalone continue 5389750Sdwmalone fi 5489750Sdwmalone ;; 5524139Sjoerg 5689750Sdwmalone neginteger) 5789750Sdwmalone if [ "x$input" != "x-1" ]; then 5889750Sdwmalone tmp=`echo $input | tr -d 0123456789` 5989750Sdwmalone if [ -n "$tmp" ]; then 6024139Sjoerg echo "Invalid integer. Please try again." 6189750Sdwmalone continue 6289750Sdwmalone fi 6389750Sdwmalone fi 6489750Sdwmalone ;; 6524139Sjoerg 6689750Sdwmalone file) 6789750Sdwmalone if [ -z "$input" ]; then 6889750Sdwmalone input=${DFLT} 6989750Sdwmalone fi 7089750Sdwmalone if [ ! -f "$input" -a ! -d "$input" ]; then 7189750Sdwmalone echo "The file $input does not exist. Please try again." 7289750Sdwmalone continue 7389750Sdwmalone fi 7489750Sdwmalone ;; 7524139Sjoerg 7689750Sdwmalone path) 7789750Sdwmalone if [ -z "$input" ]; then 7889750Sdwmalone input="${DFLT}" 7989750Sdwmalone fi 8089750Sdwmalone if [ ! -f "$input" ]; then 8189750Sdwmalone path=`echo $PATH | sed -e s'/::/ . /g' -e 's/:/ /g'` 8289750Sdwmalone x= 8389750Sdwmalone for elt in $path; do 8489750Sdwmalone if [ -f "$elt/$input" ]; then x=1; break; fi 8589750Sdwmalone done 8689750Sdwmalone if [ -z "$x" ] ;then 8789750Sdwmalone echo "The command $input was not found. Please try again." 8889750Sdwmalone continue 8989750Sdwmalone fi 9089750Sdwmalone fi 9189750Sdwmalone ;; 9224139Sjoerg 9389750Sdwmalone yesno) 9489750Sdwmalone if [ -z "$input" ]; then 9589750Sdwmalone input="${DFLT}" 9689750Sdwmalone else 9789750Sdwmalone case $input in 9889750Sdwmalone y | yes) 9989750Sdwmalone input=1 ;; 10089750Sdwmalone n | no) 10189750Sdwmalone input=0 ;; 10289750Sdwmalone *) 10389750Sdwmalone echo 'Please answer "yes" or "no".' 10489750Sdwmalone continue ;; 10589750Sdwmalone esac 10689750Sdwmalone fi 10789750Sdwmalone ;; 10824139Sjoerg 10989750Sdwmalone *) ;; 11089750Sdwmalone esac 11189750Sdwmalone break 11289750Sdwmalonedone 11324139Sjoerg 11489750Sdwmaloneif [ -z "$input" ]; then 11589750Sdwmalone input="${DFLT}" 11689750Sdwmalonefi 11724139Sjoerg 11889750Sdwmaloneecho $input > ${OFNM} 119