Alphabetical help.

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Alphabetical help.
# 15  
Old 08-19-2011
Quote:
Originally Posted by Naga06
This condition will not work. $letter < "Z" . How can we use numeric comparisons with Alphabets.?
You are mistaken. That is a string comparison. The "integer expression expected" error message came from a non-integer value in $letter when evaluating "[ $letter -eq 0 ]".

Regards,
Alister
# 16  
Old 08-19-2011
needs to be in bash i believe. Im not to sure as our lecturer or tutor hasnt specified this POSIX term. And in the lecture slide > and < can be used to compare string values apparently.

this is what i got so far

Code:
"3")
letter="Z"
if [ $letter \< "Z" && $letter \> "A" ]; then
        while [ "$letter" == Z ] || [ "$letter" \< Z ] && [ "$letter" -ne 0 ]; d
o
        read letter2
                if [ $letter2 \< $letter ]; then
                letter=letter2
                else
                break
                fi
        done
elif [ $letter2 -eq 0 ]; then
echo Lowest letter is $letter
else
echo "Invalid input. Please enter A-Z (capital) one at a time finalised by a 0"
fi
;;

first line is line 46

i get the following errors atm
Code:
./Assignment4.SH: line 48: [: missing `]'
./Assignment4.SH: line 57: [: -eq: unary operator expected
Invalid input. Please enter A-Z (capital) one at a time finalised by a 0

# 17  
Old 08-19-2011
Code:
if [ $letter \< "Z" && $letter \> "A" ]; then  ---->  ./Assignment4.SH: line 48: [: missing `]'

The "&&" terminates the "[" command. That's why you are seeing the "missing ']'" error.


Code:
elif [ $letter2 -eq 0 ]; then  ---->  ./Assignment4.SH: line 57: [: -eq: unary operator expected

$letter2 is empty. Since it's unquoted, there's nothing being passed to [ at that spot. The first thing [ sees is -eq, so it complains about wanting a unary operator because it is missing the first operand. You need to double quote your variables to ensure that if they are empty an empty string is passed in their place.

Regards,
Alister
# 18  
Old 08-19-2011
Ok. Then you can use "[[ ... ]]" construction. Inside brackets you can use < and > without backslashes for string comparisons and &&, || as boolean operator without additional brackets. So:
Code:
if [[ "$letter" < Z && "$letter" > A ]]; then

Code:
while [[ "$letter" == Z  ||  "$letter" < Z  &&  "$letter" != 0 ]];

Code:
if [[ "$letter2" < "$letter" ]]; then

Code:
[[ "$letter2" == 0 ]]

1. It's a very good habit to use double quotes around variables. Sometimes you must not use them but it is the special case - when a variable emulates an array.
2. And you don't need use quotes around "barewords" - in shell everything is strings. You can but you shouldn't because of
3. Your 0 is a string really and you don't perform any arithmetic operations. So just use bash string comparison operators: "<" ">" "!=" and "==". And if you want to use quotes around string literal, then use them around zero too (but you really shouldn't - it's just leads to confusion).
4. Double quotes around variables are not to convert them to strings but just save possible spaces inside their values.

Last edited by yazu; 08-19-2011 at 09:12 AM..
# 19  
Old 08-19-2011
dear yazu et al,

I was no aware i could take out backslashes in double bracket instances thats amazing, and treating numbers as strings is something i thought was ok only in java hahahah. Thanks a lot guys. Now that is done i get no errors.

EXCEPT

Now when i try to launch the script it goes straight to the error code i written out to catch out any unwanted inputs. What have i done wrong?

EDIT: Oh i see it Z is not less then the Z i placed. Is there a way to make less then and equal too? like =>? something like le or ge

Last edited by Ren_kun; 08-19-2011 at 09:45 AM..
# 20  
Old 08-19-2011
Not with strings. Use something like:
Code:
 [[ string1 < string2 || string1 == string2 ]]

# 21  
Old 08-19-2011
so can i have something like this?

Code:
if [[ "$letter" < Z  || "$letter" == Z && "$letter" > A || "$letter" == A ]]; then

EDIT:

Code:
"3")
clear
echo Enter capitol alphabetical letters one at a time and press 0 to finish
letter="Z"
if [[ "$letter" < Z || "$letter" == Z ]] && [[ "$letter" > A || "$letter" == A ]]; then
        while [[ "$letter" == Z || "$letter" < Z ]] && [[ "$letter" > A || "$letter" == A ]] && [[ "$letter" != 0 ]]; do
        read letter2
                if [[ $letter2 < $letter ]]; then
                letter=letter2
                else
                break
                fi
        break
        done
elif [ "$letter2" == 0 ]; then
echo Lowest letter is $letter
else
echo "Invalid input. Please enter A-Z (capital) one at a time finalised by a 0"
fi
;;

ive changed the code a bit more to make it like this. No errors occurs. However when i run the script it will ask for input and afterwards break out of all loops and end the program returning to the menu. What have i done wrong?

Last edited by Ren_kun; 08-19-2011 at 10:45 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

Script program to count only alphabetical characters

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Write a shell script program to count the ONLY the number of alphabetic characters stored in the shell variable... (1 Reply)
Discussion started by: kofine05
1 Replies

2. Shell Programming and Scripting

Sorting lines between patterns in alphabetical order

Hi, need help in sorting lines between strings "<section status = “ole-service”>" and "</section>" in alphabetical order, based on the text in red. Hoping for an AWK or SED solution. Thank you. ... <section status = “ole-service”>... <p service = "OOO">XZZ</p> <p service = "AAA">AAA... (3 Replies)
Discussion started by: pioavi
3 Replies

3. UNIX for Dummies Questions & Answers

Script to list applications in alphabetical order

I've looking over a script for work and I've had a problem with the script not listing the files in alphabetical order. To look up PIDs for apps, it would be beneficial to have them listed in that order. Here is what I've been reviewing. #!/usr/bin/perl $str = sprintf "%4s %-40s", "PID",... (7 Replies)
Discussion started by: whysolucky
7 Replies

4. Shell Programming and Scripting

[SHELL] Userlist alphabetical order

Hi everyone! I am new to the forum and have recently started working with Linux. Quick question, I want a user list in alphabetical order as the output of a shell script. Who can help me!? Thanks! From the netherlands ;) (5 Replies)
Discussion started by: dennisbest85
5 Replies

5. UNIX for Dummies Questions & Answers

Alphabetical sort for multi line records contains in a single file

Hi all, I So, I've got a monster text document comprising a list of various company names and associated info just in a long list one after another. I need to sort them alphabetically by name... The text document looks like this: Company Name: the_first_company's_name_here Address:... (2 Replies)
Discussion started by: quee1763
2 Replies

6. UNIX for Dummies Questions & Answers

How can I list the file under a directory both in alphabetical and in reverse alphabetical order?

How can I list the file under current directory both in alphabetical and in reverse alphabetical order? (1 Reply)
Discussion started by: g.ashok
1 Replies

7. UNIX for Dummies Questions & Answers

how to use sed command with alphabetical and spaces?

If have a problem with this command: name="toe der" echo $name | sed -e 's/]//g' it will become: toeder how to make it back to original? (7 Replies)
Discussion started by: elenatec
7 Replies

8. Shell Programming and Scripting

alphabetical order with out using sort command

hai, how can i sort a file alphabetically without using sort command (6 Replies)
Discussion started by: rahul801
6 Replies

9. Shell Programming and Scripting

alphabetical check

echo $TEMP|grep "" I want to check TEMP is alphabetic or not in both the cases.but in above script i am getting 1($?) if TEMP is in pure lower case or pure upper case.i want to get 0($?) when TEMP would be alphabetic in either cases.pleaaaase help me out..... (4 Replies)
Discussion started by: arghya_owen
4 Replies

10. Shell Programming and Scripting

shell program for sorting strings in an alphabetical order

Hi, I trying to find the solution for writing the programming in unix by shell programming for sorting thr string in alphabetical order. I getting diffculty in that ,, so i want to find out the solution for that Please do needful Thanks Bhagyesh (1 Reply)
Discussion started by: bp_vanarse
1 Replies
Login or Register to Ask a Question