Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Dec 1999 20:44:33 -0600
From:      Jon Hamilton <hamilton@pobox.com>
To:        Ben Smithurst <ben@scientia.demon.co.uk>
Cc:        Salihin <odhienx@arwana.untan.ac.id>, Dan Larsson <dl@tyfon.net>, "[FreeBSD-Questions-List] (E-post)" <freebsd-questions@freebsd.org>
Subject:   Re: press any key to continue in sh 
Message-ID:  <19991221024433.891113E@woodstock.monkey.net>
In-Reply-To: Your message of "Mon, 20 Dec 1999 23:18:02 GMT." <19991220231802.A540@strontium.scientia.demon.co.uk> 

next in thread | previous in thread | raw e-mail | index | archive | help

In message <19991220231802.A540@strontium.scientia.demon.co.uk>, Ben Smithurst 
wrote:
} Salihin wrote:
} 
} > On Mon, 20 Dec 1999, Ben Smithurst wrote:
} > 
} >> Dan Larsson wrote:
} >> 
} >>> How do I best produce a 'press any key to continue' prompt in sh?
} >> 
} >> Try this:
} >> 
} >> echo "Press any key to continue..."
} >> perl -e 'system("stty", "cbreak"); getc(STDIN); system("stty", "-cbreak");
} '
} >> 
} > 
} > or...
} > /bin/sh -c "read -p \"Press CTRL+C to abort and ENTER to continue !\" _e"
} > ^^^^^^
} >      shell :-)
} 
} So show me YOUR solution which implements what Dan asked for - "press
} any key to continue", not "press ENTER to continue". :-)
} 
} Using perl may not be allowed, but it's the only way I can think of
} offhand. Unless Dan wants it implemented using shell builtin commands,
} I don't see anything wrong with my solution (higher overhead than I'd
} like, but still).

Well, this will be a little lower overhead and is more shell-ish:

#!/bin/sh

echon() {
  if [ -n "`echo -n`" ] ; then
    echo "$@\c"
  else
    echo -n "$@"
  fi
}

echon "Press any key to continue: "
TTYSTATE=`stty -g`
stty raw
dd if=/dev/tty of=/dev/null bs=1 count=1 > /dev/null 2>&1
stty "$TTYSTATE"
echo

It's only good for interactive use, which may be ok given its nature :)

-- 
   Jon Hamilton  
   hamilton@pobox.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991221024433.891113E>