Variable in IF condition


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Variable in IF condition
# 1  
Old 04-04-2013
Variable in IF condition

In AIX, why is it variable VAR becomes true in the condition despite VAR was unassigned and not equal to 1?
In Linux, it was traced as an error as VAR is not declared as variable and expecting an integer as argument.

one.sh
Code:
VAR=1

if [ VAR -eq 1 ]; then
   echo "One"
fi

if [ $VAR -eq 1 ]; then
   echo "Two"
fi

AIX Output:
Code:
One
Two

Linux Output:
Code:
./one.sh: line 4: [: VAR: integer expression expected
Two

# 2  
Old 04-04-2013
It sounds like you already know the $ is left off the first VAR, that you intentionally left $ off.

Well, the Linux behavior is correct, in the sense that it detects the syntax error. -eq implies a number comparison. The string "VAR" is not a number.

I have no idea why the AIX version doesn't figure out there is a problem. Personally, I wouldn't waste any time trying to figure it out, unless you could look at the source code, except to report it as a bug.
# 3  
Old 04-04-2013
Seems AIX is not that strict. I just recreate the scenario and the actual script is used for deleting old files and need to justify why script still works even though VAR is unassigned.(but sometimes it doesn't because files were not deleted).

Running in verbose, In condition#1, VAR -eq 1 was evaluated as true. VAR in condition#2 is assigned since variable is correctly used.

Code:
+ [ VAR -eq 1 ]
+ echo One
One

if [ $VAR -eq 1 ]; then
   echo "Two"
fi
+ [ 1 -eq 1 ]
+ echo Two
Two

# 4  
Old 04-04-2013
Yes, AIX is apparently not that strict.

Once you have nonsense syntax, like VAR which is just a string, all bets are off, and no use trying to figure out why it might work under some apparently lax environment. It is quite odd that AIX does not detect an error. Smilie
# 5  
Old 04-04-2013
This is not an OS thing. Which shell are you using? Mention the version too.

Last edited by elixir_sinari; 04-04-2013 at 08:30 PM..
# 6  
Old 04-05-2013
I'm using AIX and /bin/sh shell.

uname -a: AIX strebla26 1 6 00CB6E4D4C00
oslevel: 6.1.0.0
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to add second variable in awk nested if condition?

Hi Gurus, I have a command to assign value based on input value. current condition is "if pattern matches "case", then assign "HOLD" else "SUCC"right now, I need to add one more condition (variable name is VAR). the condition is "if pattern1 matches "case", then assign "HOLD" else if... (2 Replies)
Discussion started by: ken6503
2 Replies

2. Shell Programming and Scripting

Shell variable as awk condition

Hi, I'm trying to automate part of a script which uses awk to grab out some lines of a log file based on certain fields matching. For example, my log file looks something like the following (but 1000s of lines): 1 Tom 123 abc 345 2 Dick 345 abc 678 3 Harry 567 abc 345 4 Tom 345 cde 345... (3 Replies)
Discussion started by: chrissycc
3 Replies

3. Shell Programming and Scripting

If condition to check null variable

Guys, Please help me on the below sample.cfg var=NULL sample.sh #!/bin/sh . /sample.cfg if ;then 1 st command here else 2 nd command here fi (3 Replies)
Discussion started by: AraR87
3 Replies

4. Shell Programming and Scripting

Checking for null condition in a UNIX variable

i have this code for i in `cat sql_output.txt` do -- some script commands done sql_output.txt has 1 column with employee_ids If the sql_output.txt is null then the do loop should not execute. How can i implement this. for i in `cat sql_output.txt` If i is null or empty then ... (5 Replies)
Discussion started by: rafa_fed2
5 Replies

5. Shell Programming and Scripting

Echo not displaying variable in If-Else condition

if then echo "Entry Valid : ${x_oug}" else echo "Entry Invalid : " 0 fi In the above code the 3rd line is not working... it does not print anything I tried following as well .. but no luck! echo "Entry Valid : ... (13 Replies)
Discussion started by: Chetanz
13 Replies

6. Shell Programming and Scripting

Script with variable and condition

Hello newbies question... I just need a script able to launch a command when a condition is matched : #!/bin/ksh SIZ = 'cat /nurp/control.lst|wc -l' if test "$SIZ" -gt 0 then echo 1 else echo 2 fi but I receive errors messages ./t2: SIZ: not found 2 whats wrong ? (5 Replies)
Discussion started by: vdurieu
5 Replies

7. Shell Programming and Scripting

Compare the two variable with if condition

Please help me with this: I need to compare two values in if condition in shell script but its goes always to else condition: TIME_CHECK=PM TIME-CLOCK=PM if ; then echo "You have access!" else echo "ACCESS DENIED!" fi (5 Replies)
Discussion started by: aroragaurav.84
5 Replies

8. Shell Programming and Scripting

Problem using shell variable in awk if condition

Hi friends, I'm having a bit of a problem using shell variable in an awk if statement. Please note that i'm using -v option as listed in many forums but I still don't get it working. Here's my code. Kindly help as I've gone crazy trying to work this out :wall: #!/bin/bash -xv ... (4 Replies)
Discussion started by: vishwas.s
4 Replies

9. Shell Programming and Scripting

Bash: if condition as variable

How can I use a variable that has the conditions for the if statement stored in it? my test script condition=" || || " if "$condition" then echo "true" else echo "false" fi output $ ./test2.sh ./test2.sh: line 3: || || : command not found false (2 Replies)
Discussion started by: curlee2002
2 Replies

10. Shell Programming and Scripting

if condition for variable existing in file

Hi, Sorry for the dumb question but I can't seem to figure this one out. I want to write an if condition that basically checks if my variable is in a file. So far I have the following: if ] then do something else do something else fi So essentially if the grep returns something then... (3 Replies)
Discussion started by: eltinator
3 Replies
Login or Register to Ask a Question