String comparison in if statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting String comparison in if statement
# 1  
Old 01-30-2009
String comparison in if statement

Hi

Just trying to compare the following variables as a condition in an 'if' statement.

Code:
ZERODATA="unidentified 0 b (0%)"
DATA=`sed -n "${dln} p" mpck2.out`

...

if [ "$DATA" != "$ZERODATA" ]
then
...

The problem I'm getting is that the condition always comes out true and doesn't appear to compare them properly. If I use the 'ne' operator I get an error.

(All I actually want to know is if the string DATA contains the substring '0 b (0%)' and use that in the 'if' statement but I just want to get the match for now to simplify the problem.)

Is anyone able to tell me why these would not compare correctly?
# 2  
Old 01-30-2009
Put a 'set -x' in the script so that you can see exactly what is being compared with what.

Jerry
# 3  
Old 01-30-2009
Code:
if echo "$DATA" | fgrep '0 b (0%)' >/dev/null 2>&1; then
   echo "String matched."
...
fi

That may do what you are wanting. If DATA not too long/irregular the following might
be better...

Code:
if expr "$DATA" : '.*0 b (0%)' >/dev/null; then
    echo "String matched"
...
fi

# 4  
Old 01-30-2009
Quote:
Originally Posted by javathecat
Hi
(All I actually want to know is if the string DATA contains the substring '0 b (0%)' and use that in the 'if' statement but I just want to get the match for now to simplify the problem.)

Code:
case $DATA in
     *"0 b (0%)"*) echo YES ;;
     * ) echo NO ;;
esac

# 5  
Old 02-04-2009
Smilie That did the job nicely, heres how I applied it:

Code:
case $DATA in
     *"0 b (0%)"*)  ;;
     * )
echo $FILE
echo $DATA ;;
esac

Thanks again
# 6  
Old 02-04-2009
Quote:
Originally Posted by javathecat
Smilie That did the job nicely, heres how I applied it:

Code:
case $DATA in
     *"0 b (0%)"*)  ;;
     * )
echo $FILE
echo $DATA ;;
esac


I'd have used printf to avoid potential problems with echo:

Code:
case $DATA in
     *"0 b (0%)"*)  ;;
     * ) printf "%s\n%s\n" "$FILE" "$DATA" ;;
esac

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk string comparison unterminated quoted string andrule of thumb

I have the logic below to look up for matches within the columns between the two files with awk. In the if statement is where the string comparison is attempted with == The issue seems to be with the operands, as 1. when " '${SECTOR}' " -- double quote followed by single quote -- awk matches... (1 Reply)
Discussion started by: deadyetagain
1 Replies

2. Shell Programming and Scripting

String comparison

hi team, i want to compare the below string from logs, but its is not working. if ]; then echo "restart some process" fi (4 Replies)
Discussion started by: mfaizan40
4 Replies

3. Homework & Coursework Questions

passing letters from an array into a string for string comparison

attempting the hangman program. This was an optional assignment from the professor. I have completed the logical coding, debugging now. ##I have an array $wordString that initializes to a string of dashes ##reflecting the number of letters in $theWord ##every time the user enters a (valid)... (5 Replies)
Discussion started by: lotsofideas
5 Replies

4. Shell Programming and Scripting

to extract string from main string and string comparison

continuing from my previous post, whose link is given below as a reference https://www.unix.com/shell-programming-scripting/171076-shell-scripting.html#post302573569 consider there is create table commands in a file for eg: CREATE TABLE `Blahblahblah` ( `id` int(11) NOT NULL... (2 Replies)
Discussion started by: vivek d r
2 Replies

5. Shell Programming and Scripting

Need help on If statement for comparison

Hi, We are using AIX and while using KSH Unix script, we are reading data in a file and then using the if statement for comparison. The code with if statement is as follows; cat $FILETMP | while read a do jobstr1=`echo $a | awk '{print $1}'` var1=`echo $jobstr1 | cut -c... (3 Replies)
Discussion started by: jmathew99
3 Replies

6. Shell Programming and Scripting

Help with string comparison

#!/bin/sh PRINTF=/usr/bin/printf MACHINE_NAME=`uname -n` TIME=`date +"%H"` $PRINTF "Welcome to $MACHINE_NAME. What is your name?\n" read NAME if ; then $PRINTF "Good morning $NAME, how are you?\n" elif ; then $PRINTF "Good afternoon $NAME, how are you?\n" else $PRINTF "Good... (2 Replies)
Discussion started by: ikeQ
2 Replies

7. Shell Programming and Scripting

String comparison

Hi, I have the below logic. Here 'X' is a variable having some string. if then echo "i dont need to go to ofc" else echo "i need to go to ofc" Please help me to write it in unix. Thanks. (2 Replies)
Discussion started by: 46019
2 Replies

8. Shell Programming and Scripting

Help with String Comparison

I'm running the following script to compare string values to a regexp: for entry in $(lpinfo -v | cut -c 1-); do if then echo "blah" continue fi done Whenever I run it, each token of lpinfo is being interpreted as a command and I get errors such as: ... (2 Replies)
Discussion started by: hypnotic_meat
2 Replies

9. UNIX for Dummies Questions & Answers

string comparison

Hi Guys i need to write a script to check the file structure I have added the the file headers in the configuration file and execute the file at the start of the script. Now the function checkFileStructure() { echo "Inside the function" filetocheck=$1 fileheader=$2 if ] then... (1 Reply)
Discussion started by: Swapna173
1 Replies

10. Programming

String Comparison

Hi all, I have a file like this ibhib=ere wefwfl=werfe sfdes=wef From this file, i need to get the lefthand side string with respect to the corresponding righthand side string. i.e, I need to get the string "ere" with respect to "ibhib". But i am stuck with how to compare a string... (1 Reply)
Discussion started by: abey
1 Replies
Login or Register to Ask a Question