String comparison in if statement


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting String comparison in if statement
# 1  
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  
Put a 'set -x' in the script so that you can see exactly what is being compared with what.

Jerry
# 3  
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  
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  
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  
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 for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #182
Difficulty: Medium
yq is a lightweight and portable command-line CSV processor.
True or False?

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. 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

3. 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

4. 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

5. 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

6. UNIX and Linux Applications

Need Help on String Comparison

Hi , My requirement is to read from a file into a variable. I need to check if the variable is equal to string "no rows selected". The sh script snippet is as follows: file=/data/lpgtwo/home/nikhilp/TriggerNames.txt echo $file var=`cat $file` echo $var if then echo "No... (3 Replies)
Discussion started by: MNG
3 Replies

7. Shell Programming and Scripting

String Comparison

Is there a way to compare the permission string of two files and output the string if they match? For ex: -rw-r--r-- 1 user newuser 0 2009-03-12 16:45 file2 -rw-r--r-- 1 user newuser 0 2009-03-12 16:46 fileone output: -rw-r--r-- If they don't match output will be just... (3 Replies)
Discussion started by: squardius
3 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. Shell Programming and Scripting

string comparison

Hello experts, (tcsh shell) Quite new to shell scripting... I have got a file with a single word on each line. Want to be able to make a comparison such that i can read pairs of words that are ROT13 to each other. Also, i would like to print the pairs to another file. Any help... (5 Replies)
Discussion started by: Jatsui
5 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

Featured Tech Videos