How to Check Multiple conditions in IF statement?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to Check Multiple conditions in IF statement?
# 1  
Old 07-06-2016
Oracle How to Check Multiple conditions in IF statement?

I wish to check two conditions inside the if statement

Condition 1: The two file contents should be identical // using cmp command for this.
Condition 2: The two filenames should NOT be the same.

This is what i did in vain.

Code:
if [[ cmp $entry1 $entry2 && $entry1 != $entry2 ]]; then

where entry1 and entry2 are

Code:
ls *.txt | while IFS='' read -r entry1; do
ls *.txt | while IFS='' read -r entry2; do

Getting this error
Code:
./test.sh: line 48: conditional binary operator expected
./test.sh: line 48: syntax error near `$entry1'

Code:
bash-3.2$ uname -a
SunOS mymac 5.10 Generic_150400-26 sun4v sparc sun4v

Please suggest.
# 2  
Old 07-06-2016
Hi,

You may have to use quotes around the variables like this;

Code:
if [[ "$CommandLineParameter" = "$KLParSUMMERY" && "$BACKGROUND" = "false" ]]; then

Due to the spaces in the commands.

Regards

Gull04

Last edited by gull04; 07-06-2016 at 11:17 AM.. Reason: Additional information.
# 3  
Old 07-06-2016
I tried with quotes but it is still the SAME ERROR.

Code:
if [[ cmp "$entry1" "$entry2" && "$entry1" != "$entry2" ]]; then

Please suggest.

Last edited by mohtashims; 07-06-2016 at 11:30 AM..
# 4  
Old 07-06-2016
Hi,

Try it like this;

Code:
if [[ `cmp "$entry1" "$entry2"` = "$0" && "$entry1" != "$entry2" ]]; then

Regards

Gull04
This User Gave Thanks to gull04 For This Post:
# 5  
Old 07-06-2016
Quote:
Originally Posted by gull04
Hi,

Try it like this;

Code:
if [[ `cmp "$entry1" "$entry2"` = "$0" && "$entry1" != "$entry2" ]]; then

Regards

Gull04
The condition is failing despite two files with the same contents cmp but different filenames != when it should have passed.

Can you please check ?
# 6  
Old 07-06-2016
Hi,

What does the whole script look like?

Gull04
# 7  
Old 07-06-2016
man bash: Command substitution allows the output of a command to replace the command name, i.e will make the command's stdout available for e.g. variable assignment. cmp will not output anything if files are identical, or some explanatory text if not; neither of which you want to (or can) test for. You'd go for the exit code instead. Try
Code:
if cmp $e1 $e2 && [ "$e1" != "$e2" ]; then echo same; else echo diff; fi

Trying to assign the entry variables like you showed in post#1 will fail as the while loop reading from a pipe is executed in a subshell that can't return it's variables to the parent shell, resulting in entry1 and entry2 not being set in the parent shell. Try "process substitution" for the ls command, or put ls's output into a file and read the variables from there.
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

If statement with two boolean conditions

#!/bin/bash if && then echo "True" else echo "False" fi Hi everyone, I am new to UNIX, here I have a if statement elevating two boolean conditions. I thought the output should be True because there are + in the statement. But it turns out to be False. Can anyone... (3 Replies)
Discussion started by: mryuyu1111
3 Replies

2. Shell Programming and Scripting

Multiple conditions inside if statement

I was trying to write multiple conditions inside the if statement but its not working. export VAR_NM=abc.txt export CURR_DT=20131011 export PREV_DT=20131012 if && then echo "Yes" else echo "NO" fi It should return Yes but returning NO always.Appreciate any help. (3 Replies)
Discussion started by: dr46014
3 Replies

3. Shell Programming and Scripting

Multiple conditions inside my if statement

Hello, I am using shell scripting and I am recieving odd results from my if statement if I want it to enter the loop only if L1 is equal to zero and one of the other criteria are filled, however it is entering at other times as well. What can i do to fix this? i tried seperating it... (6 Replies)
Discussion started by: ryddner
6 Replies

4. UNIX for Dummies Questions & Answers

Multiple Find Conditions in IF Statement - UNIX

When I try the below if Condition with single condition its working fine. But when I try to Club both its working . But giving wrong results. In my case cond1 = -f ${filename1} = true cond2 = -f ${filename2} = true But Cond1 & Cond2 is resulting in False ??? Please advise ... (5 Replies)
Discussion started by: Shiny_Reddy
5 Replies

5. Shell Programming and Scripting

Multiple Conditions Perl if Statement

Hello, I'm trying to put together a script that involves pulling data from a config file. I'm attempting to write an if statement to validate one of the pieces of data from the config file, but I think I'm fat fingering it somehow. $config{VALUE} is being pulled from a config file but can only... (4 Replies)
Discussion started by: Picch
4 Replies

6. Shell Programming and Scripting

Multiple conditions in a CASE statement

is it possible to use multiple conditions in a CASE statement? And if so, what is the syntax? I'm trying to use one but can't seem to get it right. I want the statement to be CASE $vendor OR $alias condition 1) statements; condition 2) statements; etc. esac but I keep... (25 Replies)
Discussion started by: Straitsfan
25 Replies

7. Shell Programming and Scripting

Multipe conditions in if statement

I have a script that runs every 15 minutes in cron that builds a web page. It runs at 15, 28, 45 and 58 minutes past the hour. (pretty much evry 15 mins). Every 2 hours from 6:28 to 18:28 it sends out emails if it finds errors. I do not want it sending email every single time it runs, every 15... (5 Replies)
Discussion started by: spacemancw
5 Replies

8. Shell Programming and Scripting

If statement with multiple conditions

I have a script that runs on multiple servers. What I want to do is have the script do the following: if $(hostname) is equal to server or server2 then TO_DIR=go else TO_DIR=stop fi I have tried: if if ] Server is hpux. any ideas? (1 Reply)
Discussion started by: cpolikowsky
1 Replies

9. UNIX for Dummies Questions & Answers

Two conditions in one if statement

I'm totally new with bash programming and I don't get it how to put two conditions in one if statement. My code looks like this: h=`date +%k` if && ]; then$h is 10 but I don't get into my if statement. What's wrong here? (5 Replies)
Discussion started by: borobudur
5 Replies

10. Shell Programming and Scripting

if statement with two conditions

Hi, I am trying to use && set up to match two conditions within ksh: if && then '''Do something if somehow, I keep getting error message telling me that ] is missing. What's wrong with my code? Thanks a lot for your help! (1 Reply)
Discussion started by: cin2000
1 Replies
Login or Register to Ask a Question