Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
08-31-2004, 02:13 AM
|
#1
|
LQ Newbie
Registered: Aug 2004
Posts: 6
Rep:
|
Unix Shell Scripting, detecting the enter key
Hello, this is my first post so hello everyone!
I am writing a script with a menu that will return an error message if the user does not pick one of the valid options, and another if the user just presses the enter key.
Is it possible to use a while loop to detect if the user has only hit the enter key?
Below is a sample of the code I used when try to catch the enter key.
Code:
#!/bin/sh
read userInputTest
while [ "$userInpurtTest" != "[Enter]" ]
do
\t "echo you did not make a selection"
done
Thank you.
Last edited by WinterSt; 08-31-2004 at 02:14 AM.
|
|
|
08-31-2004, 03:11 AM
|
#2
|
Moderator
Registered: Feb 2004
Location: Outside Paris
Distribution: Solaris 11.4, Oracle Linux, Mint, Debian/WSL
Posts: 9,795
|
Code:
#!/bin/sh
while read userInputTest
do
[[ -n "$userInputTest" ]] && break
echo you did not make a selection
done
|
|
|
08-31-2004, 04:18 AM
|
#3
|
LQ Newbie
Registered: Aug 2004
Posts: 6
Original Poster
Rep:
|
sorry that code does not work for me in the bourne shell I am using.
I get the following error
"tester.sh: [[: not found"
I guess I would like to know if I can catch the enter key by using read, placing it in a variable and then run a check on the variable to see if the user has pressed only the enter key.
|
|
|
08-31-2004, 04:29 AM
|
#4
|
Senior Member
Registered: Dec 2002
Location: England
Distribution: Used to use Mandrake/Mandriva
Posts: 2,794
Rep: 
|
I think the point is that the enter key isnt something you can explicitely test for, but the lack of any text on the entered line implies it, so test for that instead. 
|
|
|
08-31-2004, 04:48 AM
|
#5
|
LQ Newbie
Registered: Aug 2004
Posts: 6
Original Poster
Rep:
|
Thanks for pointing me in the right direction, in the end I used [ -z "$userInputTest" ] checks if $userInputTest is null.
Code:
read userInputTest
if [ -z "$userInputTest" ]; then
echo "Selection not entered.\nPress Enter to continue \c"; read dummy
else echo "Invalid code!\nPress Enter to continue \c"; read dummy
fi
|
|
|
08-31-2004, 10:27 AM
|
#6
|
Moderator
Registered: Feb 2004
Location: Outside Paris
Distribution: Solaris 11.4, Oracle Linux, Mint, Debian/WSL
Posts: 9,795
|
Quote:
sorry that code does not work for me in the bourne shell I am using.
|
OK, just use bash or ksh instead:
Code:
#!/bin/bash
while read userInputTest
do
[[ -n "$userInputTest" ]] && break
echo you did not make a selection
done
If you need to use the good old bourne shell, here's the fix:
Code:
#!/bin/sh
while read userInputTest
do
test -n "$userInputTest" && break
echo you did not make a selection
done
|
|
|
09-01-2004, 06:06 AM
|
#7
|
Member
Registered: Oct 2001
Location: /dev/null
Distribution: Debian, Slackware
Posts: 44
Rep:
|
try this. I verified myself and it works:
Code:
#!/bin/sh
while :; do
read tmp
if [ -z "$tmp" ]; then
echo "empty string!!"
else
break
fi
done
|
|
|
09-01-2004, 08:27 AM
|
#8
|
LQ Newbie
Registered: Aug 2004
Posts: 6
Original Poster
Rep:
|
Thanks. The problem has been solved.
|
|
|
All times are GMT -5. The time now is 03:17 PM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|