03-05-2012
When you grep on an open filehandle, you read the entire contents at once. After the first if-block, there isn't anything left in the filehandle to be read and grepped. So the 2nd and 3rd if-blocks always go to the else part.
One way is to store the entire contents of the file in an array @array = <FILE> and then grep from the array like this - grep {/parameter1=false} @array. This is a crude and inefficient way. What if your file is large? You wouldn't want to store the entire file in an array and cram the memory, right?
Another way would be to open the file before each if-block and close it before opening it again before 2nd if-block. But that would be an over-kill, wouldn't it?
What I did was to open it once and read it line by line in a for-loop. This way you have better control over the filehandle.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Sys: HP-UX 9000
In the calling script how do I 'read' the return/exit value of a called script?:confused:
THX in advance for any assistence.:) (1 Reply)
Discussion started by: vslewis
1 Replies
2. Shell Programming and Scripting
perl 5.6.1:
when i try a "system" command(with if loops for $?), i get this:
child exited with value 1
what is meant by this $? values and what does it meant if it returns 1?.. (0 Replies)
Discussion started by: sekar sundaram
0 Replies
3. Shell Programming and Scripting
I think the $? returns 0 if the last issued command was successful and otherwise if not. But does anyone knows the value list that may be returned ? (or it is only zero/one ? )
Thanks in advance,
Abrahao. (3 Replies)
Discussion started by: 435 Gavea
3 Replies
4. UNIX for Dummies Questions & Answers
hi,
I need to send a message to multiple users to all there logged on terminals
i tried write but its send to only one user and only one terminal
i cant use wall command because all the people in group should not receive the message (3 Replies)
Discussion started by: pbsrinivas
3 Replies
5. Shell Programming and Scripting
Hi.
I have a script like this:
nawk 'BEGIN {FS=","; TOT1=0; REJ1=0;} {
if($7=="TOTAL") { TOT1=TOT1 +$8}
if($7=="REJS") { REJ1=REJ1 +$8}
}' FILE_123.dat
and... (1 Reply)
Discussion started by: mrodrig
1 Replies
6. Shell Programming and Scripting
Hi Guys,
I am unable to return a decimal value from a function to the main script.
I am getting the correct value in the function but when it is returning to the main script using "return" it is coming as 0. Below is my code.
read VALUE_V fun_FATHERID fun_SONID fun_TOPID fun_RTYPE <... (2 Replies)
Discussion started by: mac4rfree
2 Replies
7. Shell Programming and Scripting
Hi,
I have a script which does something like the below:
execute_some_script.sh $arg1 $arg2 `exec-some-cmd`
if then;
do something
else
do something else
fi
However, during some cases, there is an error saying:
line xxx: [: too many arguments
at the line number which has... (5 Replies)
Discussion started by: laloo
5 Replies
8. Shell Programming and Scripting
Hi,
I need to retrun multiple values
function errorFileCreation
{
echo "Before"
return -1 "Siva";
echo "Aftyer"
}
echo ${?} - This can be used to getting first value.
how can i get second one.
Advance Thanks...
Shiv (3 Replies)
Discussion started by: rsivasan
3 Replies
9. Shell Programming and Scripting
I am using a for loop to copy files from say DIR1 and DIR2 to DIR3.I have to check whether files are copied from DIR1 and DIR2 and print the respective message.
@path=("$DIR1","$DIR2");
foreach (@path) {
$rc=system("cp $_/*xml $DIR3");
if ($rc == 0)
{
print "Files were copied... (1 Reply)
Discussion started by: liyakathali
1 Replies
10. Shell Programming and Scripting
Hi,
I need a shell script, which would search the result values from another files.
1)execute " select column1 from table_name" query on the table.
2)Based on the result, need to be grep from .wft files.
could please explain about this.Below is the way i am using.
#!/bin/sh... (4 Replies)
Discussion started by: Rami Reddy
4 Replies
exit(1) User Commands exit(1)
NAME
exit, return, goto - shell built-in functions to enable the execution of the shell to advance beyond its sequence of steps
SYNOPSIS
sh
exit [n]
return [n]
csh
exit [ ( expr )]
goto label
ksh
*exit [n]
*return [n]
DESCRIPTION
sh
exit will cause the calling shell or shell script to exit with the exit status specified by n. If n is omitted the exit status is that of
the last command executed (an EOF will also cause the shell to exit.)
return causes a function to exit with the return value specified by n. If n is omitted, the return status is that of the last command exe-
cuted.
csh
exit will cause the calling shell or shell script to exit, either with the value of the status variable or with the value specified by the
expression expr.
The goto built-in uses a specified label as a search string amongst commands. The shell rewinds its input as much as possible and searches
for a line of the form label: possibly preceded by space or tab characters. Execution continues after the indicated line. It is an error to
jump to a label that occurs between a while or for built-in command and its corresponding end.
ksh
exit will cause the calling shell or shell script to exit with the exit status specified by n. The value will be the least significant 8
bits of the specified status. If n is omitted then the exit status is that of the last command executed. When exit occurs when executing
a trap, the last command refers to the command that executed before the trap was invoked. An end-of-file will also cause the shell to exit
except for a shell which has the ignoreeof option (See set below) turned on.
return causes a shell function or '.' script to return to the invoking script with the return status specified by n. The value will be the
least significant 8 bits of the specified status. If n is omitted then the return status is that of the last command executed. If return
is invoked while not in a function or a '.' script, then it is the same as an exit.
On this man page, ksh(1) commands that are preceded by one or two * (asterisks) are treated specially in the following ways:
1. Variable assignment lists preceding the command remain in effect when the command completes.
2. I/O redirections are processed after variable assignments.
3. Errors cause a script that contains them to abort.
4. Words, following a command preceded by ** that are in the format of a variable assignment, are expanded with the same rules as a vari-
able assignment. This means that tilde substitution is performed after the = sign and word splitting and file name generation are not
performed.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
SEE ALSO
break(1), csh(1), ksh(1), sh(1), attributes(5)
SunOS 5.10 15 Apr 1994 exit(1)