Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
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.
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.
#!/bin/bash
echo What is your name?
read name
case $name in
[Ss]haun ) echo That is my name too!;;
esac
echo $name "is a nice name";
The preceding code is supposed to ask what the user name is, if it the same as mine, it receives the correlating statement. If not it is supposed to print out "'name' is a nice name".
The problem is that when I enter my name it prints out "that is my name too!" and "is a nice name". It should only perform the first statement; "that is my name too!".
I realize I am as green as you get not to get the syntax on this, but any help would be great. I did all of the work, I am just missing how to break the statements.
Ok, read name and case name in, you get that part right? If not, post again.
Now, you've done esac. (case spelled backwards, get it?) So, what does that mean?
I think that you're confusing esac with exit.
This stuff is very confusing at first, but will soon be clear to you. This one is fairly simple, which is why I make that statement.
First, case stuff. End the case stuff. The script is still going. So it's just going to enter $name is a nice name, regardless of what happens, because it's not part of the case--it happens after you've ended the case portion.
Have they covered *) as part of a case statement? They probably did. What do you think that would mean?
Sorry to not give the complete answer, but as you say it's homework, I'm trying to do it more as a lesson. I *think* I've given you enough clues.
Heh, yeah, I knew I was taking too long to type. Ok, so much for the lesson, dxqcanada has explained the *)---if nothing matches.
@dxqcanada, that's not a complaint, it's simply saying that you've given a good explanation.
The important thing is that you understand why dxqcanada's example works.
As I said, it all seems confusing at first, so feel free to post again if the examples and explanations aren't clear. Being able to do this one thing isn't the important thing, it's understanding why it works---then you can use it to write far more complex examples.
I'd suggest you get the Advanced Bash scripting guide from here.
Great learning tool, and can certainly be used by beginners - the "advanced" is misleading.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.