IF statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting IF statement
# 1  
Old 04-19-2003
IF statement

Hi,

i need to check for a files existence in a directory, if any of them exist then do the work....
the following will ilustrate better

directory contains files: positive.1, positive.2,positive.3

CODE
-----------
POSITIVE_FILE=positive

if [ -f $POSITIVE_FILE* ]
then

do the work

fi


that code was working on Unix AT&T but it's not work on REDHAT
please advise

thanx in advance
# 2  
Old 04-19-2003
First, try using the -e option instead..

Click this link and go to the bottom of the page for more info.

If that doesn't work, then maybe the test is actually evaluating to false.. double-check the files exist.. maybe just test for one file in particular at first..
# 3  
Old 04-20-2003
yes it's worked for one file ..... but if there r more it will not work.
unix AT&T doesn't have this prob

regards
# 4  
Old 04-20-2003
I'd create a for loop then:

for file in `ls your/dir/positive.*`
do
stuff to do to $file
done
# 5  
Old 04-20-2003
omran, on ATT unix and on redhat, do the command "man test" and look at the -f option. You will see that both systems specify a single filename. So on both systems you can try this:

mkdir testtest
cd testtest
touch file1 file2
[ -f file1 ] && echo true

and this will work fine. But you are breaking the rules. You are feeding the -f several filenames. Something like this:

[ -f file1 file2 ] && echo true

Illegal code often does different things on different systems. That is why we strive to always write legal code.

Redhat is giving you an error message. ATT is ignoring the extra filenames and only checking if the first exists. I think redhat's behavior is superior. It has brought the problem to your attention.

I know that the ATT system seems to work well in this case. Because you used a wildcard, you are getting away with it. In your case checking only the first file is enough. But it is not behaving the way you think.

[ -f file1 file2 ] && echo true
[ -f file1 xyzzy ] && echo true

will both result in true on ATT. And they will both result in an error message on redhat.

I guess that I would do:
count=`ls file* 2>/dev/null | wc -l`
if [ $count -gt 0 ]

This is compatible with the bourne shell on ATT and with bash's bourne shell emulation on redhat.

But if you need to do something to each file, the loop that oombera mentioned may be the way to go.
# 6  
Old 04-21-2003
Thanx both... that was really useful. Smilie
# 7  
Old 04-21-2003
only to complete this
i made something like this

ls $POSITIVE* 2>/dev/null
if [ $? = 0 ]
then
//code
else
//code
fi

thanx again
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies

2. Shell Programming and Scripting

If statement

Hi, I have this code here. Its suppose to do something when certain condition is met, I'm pretty sure at least one of the condition will be meet somewhere in the loop but it always go to else part of the script. Is something wrong on this script? age_list=`tar -tvf /home/dir/$tarfile... (4 Replies)
Discussion started by: erin00
4 Replies

3. Shell Programming and Scripting

Statement

${PFILE}.backupfile Please tell me what the above statement means? (1 Reply)
Discussion started by: lg123
1 Replies

4. Shell Programming and Scripting

If statement help

I'm trying to create a script that would allow me to identify the sucessful removal of a file. Here's what i put together so far, let me know if it's correct or not. FILE_NAME="cactus.dat" FILE_FIND='find / -name $FILE_NAME' if ;then echo "cactus.dat was not removed successfully" ... (3 Replies)
Discussion started by: sdpinoy
3 Replies

5. UNIX for Dummies Questions & Answers

If statement (yes or no)

I have the program: #!/bin/ksh echo Please enter yes or no read n typeset -l n if ] then echo My name exit else echo delete my name fi Question: How can I make the program accept only the word "yes" or "no" otherwise it will ask the user to re-enter? Thanks! (7 Replies)
Discussion started by: bobo
7 Replies

6. Shell Programming and Scripting

How is use sselect statement o/p in insert statement.

Hi All, I am using Unix ksh script. I need to insert values to a table using the o/p from a slelect statement. Can anybody Help! My script looks like tihs. ---`sqlplus -s username/password@SID << EOF set heading off set feedback off set pages 0 insert into ${TB_NAME}_D... (2 Replies)
Discussion started by: nkosaraju
2 Replies

7. Shell Programming and Scripting

If statement - How to write a null statement

In my ksh script, if the conditions of a if statement are true, then do nothing; otherwise, execute some commands. How do I write the "do nothing" statement in the following example? Example: if (( "$x"="1" && "$y"="a" && "$z"="happy" )) then do nothing else command command fi... (3 Replies)
Discussion started by: april
3 Replies

8. Shell Programming and Scripting

statement

I want to write a program that would convert yard to feet and feet to yard. i.e 1 yard = 3 * feet Echo "enter a" read a expr a *3 The trick is that I want to give the user some options. After the conversion from yard to feet is done, I want to ask the user whether or not he/she wants to... (10 Replies)
Discussion started by: Ernst
10 Replies

9. Shell Programming and Scripting

if statement

can someone please tell me what is wrong with the below. i'm trying to get a script to run if the content of a variable is either small letter y or capital letter Y. if then whatever fi (4 Replies)
Discussion started by: Terrible
4 Replies

10. Shell Programming and Scripting

If statement

Hi, I have a statement in shell script which i am writing below: if ] then ..... What is the meaning of -a option in files, meaning of the statement in the if condition ] means. Thanks (3 Replies)
Discussion started by: dreams5617
3 Replies
Login or Register to Ask a Question