call more options on if


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users call more options on if
# 1  
Old 08-16-2012
call more options on if

Hi all,
I'm trying to make a script that will help me a lof on some configuration,
what this should do is to check the files if they exist ,if not the script will send me a mail to notify me that the files does not exist,

but when i call the script to test it,like this
Code:
sh /test/test_script.sh  /test/test_

it says to many arguments ,
and it checks only for the first date format,and skips the other,
how can this be done to check al the date formats and to send me a single mail not 5 mail?
any suggestions are very welcome
thanks in advance.
Code:
#!/bin/sh
{
FILE=$1
TODAY1=`date +%Y-%m-%d`
TODAY2=`date +%Y_%m_%d`
TODAY3=`date +%Y%m%d`
TODAY4=`date +%y-%m-%d-%H-%M`
TODAY5=`date +%y%m%d%H%M`
if [ -e $FILE$TODAY1* ] or [ -e $FILE$TODAY2* ] or [ -e $FILE$TODAY3* ] or [ -e $FILE$TODAY4* ] or [ -e $FILE$TODAY5* ] ;
 then
  echo $FILE  File Exists
else
  echo "$FILE File not Found" | mail -s 'server-test' my.account@my.domain.com
 fi
}

# 2  
Old 08-16-2012
Neither * nor -e nor or work that way. You can't cram more than one file into -e, it won't work. By 'or' you probably meant '||'.

I'd try a loop instead of a huge or-statement, and put the files found into the $1 $2 ... list, then check if the first exists.

As a useful side-effect, the files being looked for will end up individually in $1, $2, ...

Code:
PREFIX="$1"
for D in "%Y-%m-%d" "%Y_%m_%d" "%Y%m%d" "%y-%m-%d-%H-%" "%y%m%d%H%M"
do
        TODAY="`date +$D`"
        set -- ${PREFIX}${TODAY}*
        # && is a short-form if/then.  If "$1" exists, then break out of the loop.
        [ -e "$1" ] && break
done

if [ -e "$1" ]
then
        echo "Found $# files for today:  $*"
else
        echo "No files found for today"
fi


Last edited by Corona688; 08-16-2012 at 01:22 PM..
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 08-17-2012
Thanks you very much,
very useful this method and super fast,
i was calling my first script with the date pattern at the and of the file like this
Code:
sh /test/test_script.sh  /test/test_`date +%Y_%m_%d`

but will definitively use your suggestion,
thanks again.

Regards
# 4  
Old 10-11-2012
Quote:
Originally Posted by Corona688
Neither * nor -e nor or work that way. You can't cram more than one file into -e, it won't work. By 'or' you probably meant '||'.

I'd try a loop instead of a huge or-statement, and put the files found into the $1 $2 ... list, then check if the first exists.

As a useful side-effect, the files being looked for will end up individually in $1, $2, ...

Code:
PREFIX="$1"
for D in "%Y-%m-%d" "%Y_%m_%d" "%Y%m%d" "%y-%m-%d-%H-%" "%y%m%d%H%M"
do
        TODAY="`date +$D`"
        set -- ${PREFIX}${TODAY}*
        # && is a short-form if/then.  If "$1" exists, then break out of the loop.
        [ -e "$1" ] && break
done

if [ -e "$1" ]
then
        echo "Found $# files for today:  $*"
else
        echo "No files found for today"
fi

Hi Corona688,
i tried to make some test with your suggestion,and it works when the file exists,
but the problem is when it doesn't exist,
because if the file doesn't exist the script is sending the mail to me with the latest file date format available, it is not sending the correct file date of the file,any ideas on how can i come around this?

Thanks in advance
.
Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. Ubuntu

Kernel boot options removed by fault, no boot options

Hello Everyone, First of all, I highly appreciate all Linux forum members and whole Linux community. http://forums.linuxmint.com/images/smilies/icon_wink.gif. I wish you the best for all of you ! I will try to be short and concise: I am using Linux Mint 10 for 2 months on 2 ws, and all went... (3 Replies)
Discussion started by: cdt
3 Replies

2. UNIX for Dummies Questions & Answers

Why do I need to call make if I call gcc ?

Why do I need to call make if I call gcc ? I thought gcc already compiles the sources. thanks (1 Reply)
Discussion started by: aneuryzma
1 Replies

3. Infrastructure Monitoring

diffrence between method call and function call in perl

Hello, I have a problem with package and name space. require "/Mehran/DSGateEngineLib/general.pl"; use strict; sub System_Status_Main_Service_Status_Intrusion_Prevention { my %idpstatus; my @result; &General_ReadHash("/var/dsg/idp/settings",\%idpstatus); #print... (4 Replies)
Discussion started by: Zaxon
4 Replies

4. UNIX for Advanced & Expert Users

how to differentiate system call from library call

Hi, Ho do I differentiate system call from library call? for example if I am using chmod , how do I find out if it is a system call or library call? Thanks Muru (2 Replies)
Discussion started by: muru
2 Replies

5. AIX

no options

Hi All, I have a situation here that's very fun... I have a system with AIX and iPlanet (sunOne) installed, when occurs an unknown event on the network the WebServer shows a thousand of CLOSE_WAIT connections and this number grows and grows until the webserver crashs. I read some documents... (2 Replies)
Discussion started by: nascimento.rp
2 Replies

6. UNIX for Dummies Questions & Answers

options

I am just beginning to learn unix and I was wondering if there was a list of all the options somewhere on the net or hidden in the man pages? Also do options always have - and then a letter, or can it be - and a number as well? Thanks! (1 Reply)
Discussion started by: terms5
1 Replies

7. UNIX for Dummies Questions & Answers

cp options

Hello again, Is there an option for the cp command to overwrite existing files in the destination directory? Cheers Rob (3 Replies)
Discussion started by: milage
3 Replies
Login or Register to Ask a Question