The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
checking for existence of table in oracle kjs SUN Solaris 0 10-19-2007 04:21 AM
Checking the existence of a file.. igandu Shell Programming and Scripting 7 06-13-2007 04:47 AM
checking file existence DILEEP410 Shell Programming and Scripting 3 01-24-2007 12:43 PM
File existence mpang_ Shell Programming and Scripting 2 03-27-2006 12:27 PM
XML to flat file in Unix oscarr UNIX for Advanced & Expert Users 2 08-01-2001 09:11 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-25-2008
Ariean Ariean is offline
Registered User
  
 

Join Date: Apr 2008
Posts: 25
Checking for existence of a flat file in UNIX !

Hi All,

I have a requirement where in i need to check for existence of a file and later execute some pmcmd commands related to informatica. I tried many ways but was unsuccessful could you please throw some light. Below are the sample codes i wrote.

Example 1:

#!/bin/ksh
file_path=/export/home/orainfodev/sam s
filename="voke.txt"
for file in $file_path; do
[[ -f $filename ]]
pmcmd startworkflow -u Administrator -p SADMIN -s odsdbq1:4001 -f IR_Custom WF_Test_Mapping
done

Example 2:

#!/bin/ksh
if (! -e "/u01/app/informatica/7.1.4/server/TgtFiles/sample.txt")
then
pmcmd startworkflow -u Administrator -p SADMIN -s odsdbq1:4001 -f IR_Custom WF_Test_Mapping
else
echo "Sorry Cannot start the workflow as there is no file existing in the folder"
fi

Example 3:

#!/bin/ksh
filename = "export/home/orainfodev/invoke.txt"
if test -f "$filename" then
echo "file exists"
else
echo "file does not exists"
fi


Example 4:

#!/bin/ksh
echo "Please enter a file name"
read fname
if test -f "$fname"
then echo "$fname exists"
else
echo "$fname does not exists"
fi

Thanks & Regards,
Ariean.
  #2 (permalink)  
Old 04-25-2008
era era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: /there/is/only/bin/sh
Posts: 3,652
All of your attempts are very close. As far as I can tell, the last one should have worked -- can you say what error message you get?

Quote:
Example 1:

#!/bin/ksh
file_path=/export/home/orainfodev/sam s
filename="voke.txt"
for file in $file_path; do
[[ -f $filename ]]
pmcmd startworkflow -u Administrator -p SADMIN -s odsdbq1:4001 -f IR_Custom WF_Test_Mapping
done
The -f command is just fine, but you are not using the result for anything. You could wrap that in an "if" or other conditional and it would have worked. Also the file_path needs to be put in double quotes when you declare it. Presumably the file_path paths are directories in which you want to look for voke.txt?

Code:
for file in /export/home/orainfodev/sam s ; do
    if test -f $file/voke.txt; then
        pmcmd startworkflow -u Administrator -p SADMIN -s odsdbq1:4001 -f IR_Custom WF_Test_Mapping
    else
        echo "$0: $file/voke.txt: not found" >&2
    fi
done
(Isn't the workflow command supposed to refer to the file you are checking for also, though? Either by descending into the directory where you found it, or via a command-line parameter.)

Quote:
Example 2:

#!/bin/ksh
if (! -e "/u01/app/informatica/7.1.4/server/TgtFiles/sample.txt")
then
pmcmd startworkflow -u Administrator -p SADMIN -s odsdbq1:4001 -f IR_Custom WF_Test_Mapping
else
echo "Sorry Cannot start the workflow as there is no file existing in the folder"
fi
The parentheses in the "if" are not correct syntax, but again, very close.

Quote:
Example 3:

#!/bin/ksh
filename = "export/home/orainfodev/invoke.txt"
if test -f "$filename" then
echo "file exists"
else
echo "file does not exists"
fi
You need a semicolon before the "then", or put it on a new line. Then this would work. Sheer bad luck you didn't stumble over the solution at this point.

Quote:
Example 4:

#!/bin/ksh
echo "Please enter a file name"
read fname
if test -f "$fname"
then echo "$fname exists"
else
echo "$fname does not exists"
fi
This works for me under bash. Some shells might be picky about requiring new lines after "then" and "else", maybe.
  #3 (permalink)  
Old 04-25-2008
DukeNuke2's Avatar
DukeNuke2 DukeNuke2 is offline Forum Staff  
Soulman
  
 

Join Date: Jul 2006
Location: Germany, Berlin
Posts: 2,976
i've moved the thread from "solaris" to "shell scripting..." because this is no solaris related question.

greets,
DN2
  #4 (permalink)  
Old 04-25-2008
Ariean Ariean is offline
Registered User
  
 

Join Date: Apr 2008
Posts: 25
Thanks for your reply, based on your suggestion i tried rewriting the code as below but some how i didn't understand why it is executing the statement in the else part even after the condition in the if statement is true or satisfied or pmcmd command getting executed. Could you please throw some light. Thank you.

==================

#!/bin/ksh
for file in /export/home/orainfodev/sam s ; do
if test -f $file/invoke.txt; then
pmcmd startworkflow -u Administrator -p SADMIN -s odsdbq1:4001 -f IR_Custom WF_Test_Mapping
else
echo "$0: $file/invoke.txt: not found" >&2
#echo "Could not able to find the file, cannot execute the workflow thanks!"
fi
done

=================
  #5 (permalink)  
Old 04-25-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmer, author
  
 

Join Date: Mar 2007
Location: Toronto, Canada
Posts: 2,361
Quote:
Originally Posted by Ariean View Post
Thanks for your reply, based on your suggestion i tried rewriting the code as below but some how i didn't understand why it is executing the statement in the else part even after the condition in the if statement is true or satisfied or pmcmd command getting executed. Could you please throw some light. Thank you.

==================

#!/bin/ksh
for file in /export/home/orainfodev/sam s ; do

Do you really intend to loop over two files, "/export/home/orainfodev/sam" and "s"?

If that is intended to be a single file, it needs to be quoted. And, if so, why are you using a loop?

Closed Thread

Bookmarks

Tags
unix commands

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 05:29 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0