Difference between words and not between numbers


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Difference between words and not between numbers
# 1  
Old 10-14-2010
Difference between words and not between numbers

Hi,

Sorry in advance for propably a silly question, but I am a bit lost.

On some of the linux job flow I have the following check:

Code:
if ($file != 1500) then
    echo ERROR

It works ok, all times $file is not equal to 1500 I have the error message.

I try to do something similar with words
Code:
if ($file != test) then
    echo ERROR

But the message I have is:
Code:
if: Expression Syntax.

How can I do the same kind of check with words?

Moderator's Comments:
Mod Comment Please use [code] and [/code] tags when posting code, data or logs to keep formatting and enhance readability, thanks.

Last edited by zaxxon; 10-14-2010 at 03:55 AM..
# 2  
Old 10-14-2010
Here is a good thread explaing the difference and pointing also to the Advanced Bash Scripting Guide. Check for Jim Mcnamara's answers:

https://www.unix.com/shell-programmin...rent-then.html

So you might want to change it to:
Code:
$> if [ "$file" != "test" ]; then echo ERROR; fi
ERROR

# or

$> if [[ $file != test ]]; then echo ERROR; fi
ERROR

Round brackets are for arithmetic expressions. If you want to compare strings, use square brackets.
# 3  
Old 10-14-2010
You should use "test" instead of test
... since test is a shell command !
choose another string that is not a shell command (ex : "mytest") to avoid any confusion ...

Code:
[[ "$file" != "mytest" ]] && echo ERROR

# 4  
Old 10-14-2010
Indeed test is an unlucky example - put it into quotes as ctsgnb said to be on the safe side.
# 5  
Old 10-14-2010
Hi,

Thank you for helping me. The "test" example was just that.... An example. So that is not a problem, it was just to simplify.

The full thing:

1) extracting a number from a file and checking if it is different from what is supposed to be
Code:
set thenumber = `grep "something" $file | awk '{print $9}'`
if ($thenumber != 1500) then
    echo ERROR

The above works ok

2) same as before, but in this case the thing to check is a word (or even more than one, but now I am testing with 1 word only). It does not seem working even with square brackets
Code:
set theword = `grep "somethingelse" $file | awk '{print $6}'`
if [$theword != NOT] then
echo ERROR

At stage two I have
Code:
if: Expression Syntax.

I tried to quote "NOT", no difference

---------- Post updated at 04:09 AM ---------- Previous update was at 04:05 AM ----------

Sorry, I've seen the problem (I think)

I had
Code:
=! for !=



---------- Post updated at 04:33 AM ---------- Previous update was at 04:09 AM ----------

It works but in the other way round

Code:
grep "somethingelse" $file | awk '{print $6}'

is NOT

so when I do

Code:
if [NOT != NOT] then
echo ERROR

I expect to do not see the error message, but I have it.

For some reason the word "NOT" extracted with grep is different from the second "NOT"?

I tried anyway to type manually also the first "NOT" (skipping the grep part, and I still have the error message: what is different between the 2 "NOT"?

Code:
if [NOT != NOT] then
echo ERROR

# 6  
Old 10-14-2010
What Shell are you using?
Code:
echo $SHELL

This User Gave Thanks to methyl For This Post:
# 7  
Old 10-14-2010
/bin/tcsh
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Comparing two files with numbers and taking difference in third file

Hi All, I have two files in the following format, with numbers being defined under columns(described by a set of headers) and rows(again defined by a set of identifiers) 2013 2013 Make200 Make201 Merc BMW Jpur Del ... (9 Replies)
Discussion started by: dev.devil.1983
9 Replies

2. Shell Programming and Scripting

Adding numbers matching with words

Hi All, I have a file which looks like this: abc 1 abc 2 abc 3 abc 4 abc 5 bcd 1 bcd 3 bcd 3 bcd 5 cde 7 This file is just a miniature version of what I really have. Original file is some 1 million lines long. I have tried to come up with the code for what I wish to accomplish... (1 Reply)
Discussion started by: shoaibjameel123
1 Replies

3. Shell Programming and Scripting

Put numbers against the words

Hi All, I tried to solve this but the result gives me all zeros for one file. I failed to do for all 500 files. I have some 500 files with the extension .dat I have another set of files; 500 in number with extension .dic I created these .dic files by using sort -u from the actual .dat files.... (2 Replies)
Discussion started by: shoaibjameel123
2 Replies

4. UNIX for Dummies Questions & Answers

Trying to sort words and numbers associated with them.

Hi. I have a file containing words and numbers associated with them as follows - c 2 b 5 c 5 b 6 a 10 b 16 c 18 a 19 b 21 c 27 a 28 b 33 a 76 a 115 c 199 c 251 a 567 a 1909 (4 Replies)
Discussion started by: maq
4 Replies

5. UNIX for Dummies Questions & Answers

calculate the difference between numbers in lines of file

Hi everyone, i have files containing lines of number: 109 107 67 62 .. .. i want to calculate the difference between numbers in lines 1 and 2, 3 and 4, 5 and 6 and so on. would someone help me please?. Thanks (12 Replies)
Discussion started by: ahidayat
12 Replies

6. Shell Programming and Scripting

Printing the column that begins with certain words/numbers

Hi guys, I have got a file which doesn't have the same number of columns in each line. I would like to print the second column and the one that begins with 33= and has some numbers after '33=' Can you please help me asap? Cheers (7 Replies)
Discussion started by: alexandra_ola
7 Replies

7. Shell Programming and Scripting

Query to print numbers in words

Hi, I have to write a shell script that converts numbers in to words below is what i wrote.My script is not running. ----------------------------------- echo -n "Enter number : " read n len= echo $n | wc -c echo " number in words : " for ( i=1; i<len; i++ ) do num=echo $n... (5 Replies)
Discussion started by: bab123
5 Replies

8. Shell Programming and Scripting

Extract numbers below words with awk

Hi all, Please some help over here. I have a Sales.txt file containing info in blocks for every sold product in the pattern showed below (only for 2 products). NEW BLOCK SALE DATA PRODUCT SERIAL 79833269999 146701011945004 .Some other data .Some... (17 Replies)
Discussion started by: cgkmal
17 Replies

9. Web Development

Query to print numbers in words

Hi, If i give a number say "1234" the output of mysql query should be: one thousand and twenty four How to write mysql query for this? With regards Vanitha (5 Replies)
Discussion started by: vanitham
5 Replies

10. UNIX for Dummies Questions & Answers

how to separate numbers and words from a file using shell scripts

Hi, How to separate numbers and words(with full alphabets) in a particular file and store it in two different files. Please help me out for this.Using shell scripting. :confused::confused: (1 Reply)
Discussion started by: kamakshi s
1 Replies
Login or Register to Ask a Question