Help sorting with an "if" statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help sorting with an "if" statement
# 1  
Old 10-18-2010
Help sorting with an "if" statement

The problem is asking to sort 3 words in alphabetical order without using the "sort" command. Below is what i came up with so far. It is too long and i dont think it takes every combination into consideration. Is there a better way to do this?

Code:
echo "Enter a word"
read a
echo "Enter another word"
read b
echo "Enter another word"
read c

if [[ "$a" < "$b" ]] && [[ "$b" < "$c" ]]
then
  echo "$a"
  echo "$b"
  echo "$c"
elif [[ "$a" > "$b" ]] && [[ "$b" > "$c" ]]
then 
  echo "$c"
  echo "$b"
  echo "$a"
elif [[ "$a" > "$b" ]] && [[ "$b" < "$c" ]]
then 
  echo "$b"
  echo "$a"
  echo "$c"
elif [[ "$a" < "$b" ]] && [[ "$b" > "$c" ]]
then 
  echo "$c"
  echo "$a"
  echo "$b"
fi

Thanks for any help!
# 2  
Old 10-19-2010
Code:
#!/bin/ksh
echo "Enter a word"
read a
echo "Enter another word"
read b
echo "Enter another word"
read c
tmpdir=/tmp/.$$
mkdir $tmpdir
touch $tmpdir/"$a" $tmpdir/"$b" $tmpdir/"$c"
ls -1 $tmpdir
rm -rf $tmpdir

This User Gave Thanks to jlliagre For This Post:
# 3  
Old 10-19-2010
Using ksh:

Code:
#!/bin/ksh
echo "Enter first word"
read a
echo "Enter second word"
read b
echo "Enter third word"
read c
set $a $b $c
set -s
echo $1\\n$2\\n$3

or without using set -s :

Code:
echo "Enter first word"
read a
echo "Enter second word"
read b
echo "Enter third word"
read c
S="Z"
while [ ! -z "$S" ] ; do
   S=
   [[ "$a" > "$b" ]] && S="$b" && b="$a" && a="$S"
   [[ "$b" > "$c" ]] && S="$c" && c="$b" && b="$S"
done
echo $a\\n$b\\n$c


Last edited by Chubler_XL; 10-19-2010 at 01:21 AM.. Reason: Added version without set -s
This User Gave Thanks to Chubler_XL For This Post:
# 4  
Old 10-19-2010
Thanks Guys!

I am just a beginner, some of your concepts are unknown to me. Nevertheless, it did help me. I came up with something simpler (in the sense of simpler coding) ...so far it works .. but i think this would only work just for a 3 words..whereas your codes would work for numerous (pending changes in variables)

Code:
echo "Enter a word"
read a
echo "Enter another word"
read b
echo "Enter another word"
read c

if [[ "$a" < "$b" ]]
then
  if [[ "$b" < "$c" ]]
  then
    echo "$a"
    echo "$b"
    echo "$c"
  elif [[ "$a" < "$c" ]]
  then
    echo "$a"
    echo "$c"
    echo "$b"
  else
    echo "$c"
    echo "$a"
    echo "$b"
  fi
else
  if [[ "$a" < "$c" ]]
  then
    echo "$b"
    echo "$a"
    echo "$c"
  elif [[ "$b" < "$c" ]]
  then
    echo "$b"
    echo "$c"
    echo "$a"
  else
    echo "$c"
    echo "$b"
    echo "$a"
  fi
fi

Thanks Again!!
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Shell Programming and Scripting

"if" statement based off "grep"

Hello, I am somewhat new to Linux/Unix. I am currently working on a shell script that is suppose to cat a file, grep the same file for a certain line, if that line is found save the file in a different location, else remove the file. This is a rough example of what I want. $Dating = False... (13 Replies)
Discussion started by: Amzerik
13 Replies

5. UNIX for Dummies Questions & Answers

What is the meaning of "-s" option in "if" statement?

Hi Guys, I'm sorry but I can't find answer for this, what is the meaning of -s option in "if" statement on unix scipting. Please see sample below: opath=/home/output for i in N1 N2 N3 N4 do echo $i if then grep $i $opath/N5_CRAI > $opath/N5_$i.crai chmod 777 $opath/N5_$i.crai ... (7 Replies)
Discussion started by: rymnd_12345
7 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

What "-a" operator means in "if" statement

Hi I am trying to figure out what the following line does, I work in ksh88: ] && LIST="$big $LIST" Not sure what "-a" means in that case. Thanks a lot for any advice -A (1 Reply)
Discussion started by: aoussenko
1 Replies

8. Red Hat

"if" and "then" statement is not working in RedHat

Dear experts, I'm trying to write a script to calculate the usage of Log Archive in a directory, so if it gets to a point where the directory size is 60%, then send out an FYI.. email. So if then it reaches to 80%, move the logs from that directory. I have written the script as follow but... (10 Replies)
Discussion started by: Afi_Linux
10 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question