Need to condense numerous IF/ELSE/FI statements into one if possible.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need to condense numerous IF/ELSE/FI statements into one if possible.
# 1  
Old 05-25-2011
Need to condense numerous IF/ELSE/FI statements into one if possible.

Hi there!

Have literally just started using UNIX bash shell again and am writing simple scripts in VI.

I basically have a working script but I know without a doubt it could be condensed down to much less code by integrating the individual IF statements.

Here is my shoddy code Smilie

Code:
 
#!/bin/bash
 
clear
 
read -p "Please enter a string: " str1
read -p "Please enter another string: " str2
 
length1=$(echo -n $str1 | wc -c)
length2=$(echo -n $str2 | wc -c)
 
if [ $length1 -gt $length2 ] ; then
        output="String one is longer!"
fi
 
if [ $length1 -lt $length2 ] ; then
        output="String two is longer!"
fi
 
if [ $length1 -eq $length2 ] ; then
        output="Strings are of equal length!"
fi
 
echo $output

Sorry to ask such a noob question, I have exhaustively tried numerous things but I just keep getting errors which I cannot seem to throw!

Thanks in advance Smilie
# 2  
Old 05-25-2011
Code:
#!/bin/bash
 
clear
 
read -p "Please enter a string: " str1
read -p "Please enter another string: " str2
 
length1=${#str1}	# not necessary to use external commands
length2=${#str2}

if [ $length1 -gt $length2 ] ; then
        output="String one is longer!"
elif [ $length1 -lt $length2 ] ; then		# use elif
        output="String two is longer!"
elif [ $length1 -eq $length2 ] ; then
        output="Strings are of equal length!"
fi
 
echo $output

This User Gave Thanks to Franklin52 For This Post:
# 3  
Old 05-25-2011
Hi U_C_Dispatj,
Please tell th error you are encountering. The code worked fine for me it is as below.
Code:
#!/bin/bash

clear

read -p "Please enter a string: " str1
read -p "Please enter another string: " str2

length1=$(echo -n $str1 | wc -c)
length2=$(echo -n $str2 | wc -c)

if [ $length1 -gt $length2 ] ; then
        output="String one is longer!"
else

if [ $length1 -lt $length2 ] ; then
        output="String two is longer!"
else

if [ $length1 -eq $length2 ] ; then
        output="Strings are of equal length!"
fi
 fi
   fi
echo $output

Please let me know if any doubt.
Regards,
Mayur
This User Gave Thanks to mayursingru For This Post:
# 4  
Old 05-25-2011
Note the use of final else!
Code:
clear

read -p "Please enter a string: " str1
read -p "Please enter another string: " str2

length1=$(echo -n $str1 | wc -c)
length2=$(echo -n $str2 | wc -c)

if [ $length1 -gt $length2 ] ; then
   output="String one is longer!"
elif [ $length1 -lt $length2 ] ; then
   output="String two is longer!"
else
   output="Strings are of equal length!"
fi

echo $output

Or even better:
Code:
clear

read -p "Please enter a string: " str1
read -p "Please enter another string: " str2

length1=${#str1}
length2=${#str2}

if (( length1 > length2 )) ; then
   output="String one is longer!"
elif (( length1 < length2 )) ; then
   output="String two is longer!"
else
   output="Strings are of equal length!"
fi

echo $output

This User Gave Thanks to fpmurphy For This Post:
# 5  
Old 05-25-2011
Code:
#!/bin/bash

clear

read -p "Please enter a string: " str1
read -p "Please enter another string: " str2

case $(( ${#str1} - ${#str2} )) in
         0) echo "Strings are of equal length!";;
        -*) echo "String two is longer!";;
         *) echo "String one is longer!";;
esac

This User Gave Thanks to danmero For This Post:
# 6  
Old 05-26-2011
thankyou for all your help guys. i didnt know you could find out the length of a variable by using a hash #..
i just knew my code was too long, am used to using VB so am a bit new to all this syntax change.

thanks again !
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Split 1 column into numerous columns based on patterns

Hi, I have a text file 'Item_List.txt' containing only 1 column. This column lists different products, each separated by the same generic string header "NEW PRODUCT, VERSION 1.1". After this the name of the product is given, then a delimiter string "PRODUCT FIELD", and then the name of the... (11 Replies)
Discussion started by: mmab
11 Replies

2. Shell Programming and Scripting

Script to check numerous ports / servers (Solaris native)

Hi I'd like to check that a bunch of firewall rules have been applied and, therefore, want to write a script that basically does the following: telnet serverA port1 telnet serverA port2 telnet serverB port1 telnet serverB port2 I would just compile the list in excel and run it as a... (2 Replies)
Discussion started by: jibberish
2 Replies

3. Shell Programming and Scripting

sed command to condense two lines into one

My eyes glaze over trying to understand multiline sed commands, so please forgive me if this has been asked before. I'd like to condense the following two lines: fooPATTERN1 PATTERN2bar into the following one line: foobar How is that done in sed? (7 Replies)
Discussion started by: scolfax
7 Replies

4. Fedora

Concatenate Numerous Files

Hey! I wanted to find a text version of the Bible for purposes of grepping. The only files I could find, (in the translation I wanted), were Old Testament.txt and New Testament.txt. I thought, "fine, I'll just concatenate those two, no problemo." But when I unpacked them, turns out they had each... (22 Replies)
Discussion started by: sudon't
22 Replies

5. Shell Programming and Scripting

How to batch-processing numerous shell scripts?

How to batch-processing numerous shell scripts? how to record the result of all the scripts as a report? then, I can analysis the process result. I want to process numerous shell scripts in my working directory: the directory name is consistent with shell scripts name, that is to say,... (2 Replies)
Discussion started by: qcmao
2 Replies

6. Shell Programming and Scripting

condense multiple steps

Can I do multiple passes in one step? sed 's/<FONT face='\''Arial'\'' size='\''3'\''>//' $file > tmpfile.html ; mv tmpfile.html $file sed 's/<FONT face='\''Courier'\'' size='\''3'\''>//' $file > tmpfile.html ; mv tmpfile.html $file sed 's/<\/FONT>//' $file > tmpfile.html ; mv... (2 Replies)
Discussion started by: dba_frog
2 Replies

7. UNIX for Dummies Questions & Answers

bring up/down numerous interfaces

On a Solaris 9 system I had something happen to some of my interfaces; for some reason half of them went down. Since I have over 30 different Virtual IP's (or logical IP's) up on ce10 I don't want to take the time to find out which ones are up and which ones are down or even run the addif command... (2 Replies)
Discussion started by: snoman1
2 Replies

8. HP-UX

Need to decommission numerous HP N class servers...any thoughts to do quickly?

I have numerous N-class servers with internal and external disks that I need to wipe. Does anyone have any ideas to do this quick and painless. Anything other than a sledge hammer Also, do I need to be in single-user mode and if so how do I do that? Servers are running 11.11 Thanks (3 Replies)
Discussion started by: itry
3 Replies

9. UNIX for Advanced & Expert Users

Making numerous virtual copies of a single file

I have to put a single/identical file to numerous different directories on a website and update them simultaneously and identically. If I have the master file in directory a/, how can I make a "virtual copy" of this file into an other directory, in a way that any changes to the master file will... (2 Replies)
Discussion started by: poredudue
2 Replies

10. UNIX for Dummies Questions & Answers

Deleting numerous files

Hi there, I have numerous files in a directory (approx 2500) that I want to delete although I get the following:- Server> rm *.* Arguments too long Is there a proper way of deleting this rather than breaking it down further through the list of files rm *10.* rm *11.* rm *12.* ... (10 Replies)
Discussion started by: Hayez
10 Replies
Login or Register to Ask a Question