Need Multiple checks inside if condition in a bash shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need Multiple checks inside if condition in a bash shell script
# 1  
Old 06-29-2017
Hammer & Screwdriver Need Multiple checks inside if condition in a bash shell script

Hi,

I need to perform the untar and rm operation if the file found is a .tar and does not have test.tar or hello.tar as the file names.

Below is the loop to check the same.

Code:
        for tf in *.tar
        do      if [[ ( -f "$tf" ) && ( "$tf" != test.tar || "$tf" != hello.tar ) ]]
                then    found=1
                        echo "UNTAR THIS:"$tf
                        tar xvf "$tf" && rm -rf "$tf"
                        ec=$?
                        if [ $ec -ne 0 ]
                        then    exit $ec
                        fi
                else
                echo "DONT TOUCH THIS TAR:"$tf
                fi
        done

However, when I run the script in debug mode it is only checking the condition "$tf" != test.tar and ignores this check "$tf" != hello.tar

So it untars and removes hello.tar when it was suppose to ignore it.

Can you please suggest.
# 2  
Old 06-29-2017
The problem is with the ||. Basically it will stop testing if
Code:
"$tf" != test.tar

What you should have had was either of the lines below:
Code:
if [[ ( -f "$tf" ) && ( "$tf" != test.tar && "$tf" != hello.tar ) ]]
if [[ ( -f "$tf" ) && !( "$tf" = test.tar || "$tf" = hello.tar ) ]]

In the first case you are asking 'Does "$tf "not match "test.tar" AND does "$tf" not match "hello.tar"?'
In the second case you negate the actual match of $tf to either one or the other.

Andrew
This User Gave Thanks to apmcd47 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Aliases NOT working inside bash shell script

i have defined a function ln_s() for customizing the ln command in script1.sh. more script1.sh echo "Starting Execution" ./script2.sh echo "End of Execution" ln_s(){ ] && return ln -s "$1" "$2" } My script1.sh executes another script2.sh which has the following entry more script2.sh... (12 Replies)
Discussion started by: mohtashims
12 Replies

2. Shell Programming and Scripting

[Help] Bash script that runs in the background and checks for mails...

Hello! I have got a homework. The bash script runs in the background and checks the user's mailbox and when the user gets a new mail a popup window appears with some text and information about the sender (from who and when).I have no idea how to start, any help would be appreciated! Thank you:) (1 Reply)
Discussion started by: capo2ndfret
1 Replies

3. Shell Programming and Scripting

Script to Run Multiple Systems Checks and mail me the results after every reboot- Linux

Hello, I'm trying to create a mechanism wherein a set of Production servers will email me the results of system checks like Uptime, NFS Mounts and a Process after every scheduled reboot. For this, I figured I'd use the @reboot parameter that crond comes with. I have added the below onliner... (3 Replies)
Discussion started by: pocodot
3 Replies

4. Shell Programming and Scripting

If else condition inside for loop of awk command in UNIX shell scripting

Hi , Please excuse me for opening a new thread i am unable to find out the syntax error in my if else condition inside for loop in awk command , my actual aim is to print formatted html td tag when if condition (True) having string as "failed", could anyone please advise what is the right... (2 Replies)
Discussion started by: karthikram
2 Replies

5. Shell Programming and Scripting

Multiple condition checking in bash

Hi All, I am trying to check if two variables have value assigned to it. i am doing it like if ] then echo "Please specify either single hostname or host file for the report" usage exit fi But its not working for it.Even i specify values for both variables it dont go... (6 Replies)
Discussion started by: kailash19
6 Replies

6. Shell Programming and Scripting

Error while using sqlplus command inside 'if' condition in an unix shell script

Hi all, I am using the below given sqlplus command in my unix script to invoke a stored procedure which returns a value .It works fine. RET_CODE=$(/opt/oracle/product/10.2.0.4.CL/bin/sqlplus -S $USER/$PASSWD@$DB_NAME <<EOF EXEC MY_PKG.MY_SP (:COUNT); PRINT COUNT; commit; ... (6 Replies)
Discussion started by: Shri123
6 Replies

7. Shell Programming and Scripting

[Bash] MD5 Checks with Script.

Hi. I'm triyng to make a Bash Script that checks (recursively) the MD5 from all the files in a certain directory and compare them against some other check that should be already done and saved in a file. I've reached to the point where i have the MD5 from the file and the MD5 that the script... (1 Reply)
Discussion started by: BiFo
1 Replies

8. Shell Programming and Scripting

Sed inside bash script - accessing multiple files

I have a file (email) containing email addresses. I have a second file (terms) that contains simple regular expressions and words/characters. Here are some examples: \.trainee \.group \.web I want to go through email and delete lines containing the expressions/words from terms and write... (1 Reply)
Discussion started by: manouche
1 Replies

9. UNIX for Dummies Questions & Answers

need shell script that checks your user id and your permission level

I just need the shell script that checks your user id and your permission level. I sort of have one to check the user id but I don't like it. Can anyone help with this? (3 Replies)
Discussion started by: yammer
3 Replies

10. Shell Programming and Scripting

script to check for a condition inside a file

Hi I am writing a script file which sends the log files along with their size in a folder named log to a file called temp.log using the following cmd: ls -st 190_GSTV_HUX_003QISCGSK026** >> /home/user/temp.log the temp.log looks like this: 16 190_GSTV_HUX_003QISCGSK026_message070321.log ... (11 Replies)
Discussion started by: kiran1112
11 Replies
Login or Register to Ask a Question