getans revision 89750
1#!/bin/sh 2# getans prompt type default results_filename 3# type is one of 4# number 5# integer 6# neginteger 7# file default=default filename 8# path 9# yesno default=0,1 corres yes or no 10# string (default) 11 12RAWPMPT=$1 13TYP=$2 14DFLT=$3 15OFNM=$4 16 17ny0="no"; ny1="yes" 18if [ ${TYP} = "yesno" ]; then 19 eval ny=\$ny${DFLT} 20 pmpt="${RAWPMPT} [$ny]: " 21else 22 if [ -z "${DFLT}" ]; then 23 pmpt="${RAWPMPT}" 24 else 25 pmpt="${RAWPMPT} [${DFLT}]: " 26 fi 27fi 28if [ x"`echo -n`" = x-n ] 29then 30 c=\\c 31else 32 n=-n 33fi 34 35while : 36do 37 echo $n "$pmpt"$c 38 read input 39 case "$TYP" in 40 number) 41 tmp=`echo $input | tr -d 0123456789.` 42 if [ -n "$tmp" ]; then 43 echo "Invalid number. Please try again." 44 continue 45 fi 46 ;; 47 48 integer) 49 tmp=`echo $input | tr -d 0123456789` 50 if [ -n "$tmp" ]; then 51 echo "Invalid integer. Please try again." 52 continue 53 fi 54 ;; 55 56 neginteger) 57 if [ "x$input" != "x-1" ]; then 58 tmp=`echo $input | tr -d 0123456789` 59 if [ -n "$tmp" ]; then 60 echo "Invalid integer. Please try again." 61 continue 62 fi 63 fi 64 ;; 65 66 file) 67 if [ -z "$input" ]; then 68 input=${DFLT} 69 fi 70 if [ ! -f "$input" -a ! -d "$input" ]; then 71 echo "The file $input does not exist. Please try again." 72 continue 73 fi 74 ;; 75 76 path) 77 if [ -z "$input" ]; then 78 input="${DFLT}" 79 fi 80 if [ ! -f "$input" ]; then 81 path=`echo $PATH | sed -e s'/::/ . /g' -e 's/:/ /g'` 82 x= 83 for elt in $path; do 84 if [ -f "$elt/$input" ]; then x=1; break; fi 85 done 86 if [ -z "$x" ] ;then 87 echo "The command $input was not found. Please try again." 88 continue 89 fi 90 fi 91 ;; 92 93 yesno) 94 if [ -z "$input" ]; then 95 input="${DFLT}" 96 else 97 case $input in 98 y | yes) 99 input=1 ;; 100 n | no) 101 input=0 ;; 102 *) 103 echo 'Please answer "yes" or "no".' 104 continue ;; 105 esac 106 fi 107 ;; 108 109 *) ;; 110 esac 111 break 112done 113 114if [ -z "$input" ]; then 115 input="${DFLT}" 116fi 117 118echo $input > ${OFNM} 119