Why does the gawk-function close return -1 ?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Why does the gawk-function close return -1 ?
# 1  
Old 04-15-2016
Why does the gawk-function close return -1 ?

Hallo,

why does the gawk-function close return -1 ? Smilie
the file sortiert.txt was created and exists (with the sorted print-string).

The source Code:
Code:
BEGIN{
	print	"b\n\na\nx\n9" | "sort  > sortiert.txt"
	error = close ("sort > sortiert.txt")
	print error
	if (error) {print "close error"} else {print "close ok"}
}

in this example close returns 0 (as expected):

Code:
BEGIN{
print "I am the content" > "foo.txt"
error=	close ("foo.txt")
if (error) {print "close error"} else {print "close ok"}
			}


example 3: close returns 0 (as expected):

Code:
BEGIN{
    "date" | getline
    if (!NF) {exit -1;}
    print "Date: ", $0
    error=close("date")
if (error) {print "close error"} else {print "close ok"}
}

# 2  
Old 04-15-2016
You need to close the writing side of the pipe, not the reading side. From the gawk manual:

======
For example, if you open a pipe with this: "sort -r names" | getline foo
then you must close it with this:
close("sort -r names")
========

Last edited by RudiC; 04-15-2016 at 05:15 AM.. Reason: Added icode tags.
# 3  
Old 04-15-2016
hallo,

My example1 is from this nawk-site:

www . staff.science.uu.nl/~oostr102/docs/nawk/nawk_39.html

Trim the spaces in the url (i am not allowed to post links)

Quote:
if you open a pipe with this:

print $1 | "sort -r > names.sorted"
then you must close it with this:

close("sort -r > names.sorted")
print pipes the data to the shell-command.
# 4  
Old 04-15-2016
Quote:
Originally Posted by wilmaed
Hallo,

why does the gawk-function close return -1 ? Smilie
the file sortiert.txt was created and exists (with the sorted print-string).

The source Code:
Code:
BEGIN{
	print	"b\n\na\nx\n9" | "sort  > sortiert.txt"
	error = close ("sort > sortiert.txt")
	print error
	if (error) {print "close error"} else {print "close ok"}
}

in this example close returns 0 (as expected):

Code:
BEGIN{
print "I am the content" > "foo.txt"
error=	close ("foo.txt")
if (error) {print "close error"} else {print "close ok"}
			}


example 3: close returns 0 (as expected):

Code:
BEGIN{
    "date" | getline
    if (!NF) {exit -1;}
    print "Date: ", $0
    error=close("date")
if (error) {print "close error"} else {print "close ok"}
}

What output do you get from the following command sequence?:
Code:
date
printf "b\n\na\nx\n9\n" | sort > sortiert.txt
printf 'exit code is %d\n' $?
ls -l sortiert.txt
id

# 5  
Old 04-15-2016
Hi,

my cygwin (GNU Awk 4.1.3) output:


Code:
wilma@windows10 /
$ unlink sortiert.txt

$ date
Fr, 15. Apr 2016 09:12:41

wilma@windows10 /
$ printf "b\n\na\nx\n9\n" | sort > sortiert.txt

wilma@windows10 /
$ printf 'exit code is %d\n' $?
exit code is 0

wilma@windows10 /
$ ls -l sortiert.txt
-rw----r--+ 1 wilma Kein 9 15. Apr 09:12 sortiert.txt

wilma@windows10 /
$ id
uid=197609(wilma) gid=197121(Kein) Gruppen=197121(Kein),545(Benutzer),4(INTERAKTIV),66049(KONSOLENANMELDUNG),11(Authentifizierte Benutzer),15(Diese Organisation),113(Lokales Konto),66048(LOKAL),262154(NTLM-Authentifizierung),401408(Mittlere Verbindlichkeitsstufe)

wilma@windows10 /
$ more sortiert.txt

9
a
b
x

# 6  
Old 04-15-2016
Quote:
Originally Posted by wilmaed
Hallo,

why does the gawk-function close return -1 ? Smilie
the file sortiert.txt was created and exists (with the sorted print-string).

The source Code:
Code:
BEGIN{
    print    "b\n\na\nx\n9" | "sort  > sortiert.txt"
    error = close ("sort > sortiert.txt")
    print error
    if (error) {print "close error"} else {print "close ok"}
}

.
.
.
"sort > sortiert.txt" is not open. The target for your print has two spaces in front of the redirection.

Last edited by RudiC; 04-15-2016 at 04:39 AM.. Reason: Rephrased.
# 7  
Old 04-15-2016
Oh ... Smilie

thank you
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Function - Make your function return an exit status

Hi All, Good Day, seeking for your assistance on how to not perform my 2nd, 3rd,4th etc.. function if my 1st function is in else condition. #Body function1() { if then echo "exist" else echo "not exist" } #if not exist in function1 my all other function will not proceed.... (4 Replies)
Discussion started by: meister29
4 Replies

2. Shell Programming and Scripting

Return: can only `return' from a function or sourced script

Not sure where the problem is. I can run the script without any issue using the following command. . /opt/app/scripts/cdc_migration.sh But it fails with the below error when I try it this way /opt/app/scripts/cdc_migration.sh /opt/app/scripts/cdc_migration.sh: line 65: return: can only... (1 Reply)
Discussion started by: svajhala
1 Replies

3. Shell Programming and Scripting

This function (decode64) runs on gawk but not on busybox awk

Hello, I'm trying to figure out a way to use a decode64 function in an embedded system who has few utilities, including busybox. Right now have something like this (taken from "google base64-and-base85-encoding-awk-scripts" sorry, I'm not able to post urls yet) _decode64() { &&... (4 Replies)
Discussion started by: chilicuil
4 Replies

4. Shell Programming and Scripting

getting return value from oracle function

So, in Oracle (11gR2) on aix I have a function like: CREATE OR REPLACE function COMMON.t2(var1 in varchar2, vari in number,var2 in out number) return number as begin insert into korisnik_temp(kor_inicia, kor_opisno) values(1, var1); var2:=0; return var2; exception when... (12 Replies)
Discussion started by: bongo
12 Replies

5. Shell Programming and Scripting

Return a value from called function to the calling function

I have two scripts. script1.sh looks -------------------------------- #!/bin/bash display() { echo "Welcome to Unix" } display ----------------------------- Script2.sh #!/bin/bash sh script1.sh //simply calling script1.sh ------------------------------ (1 Reply)
Discussion started by: mvictorvijayan
1 Replies

6. Shell Programming and Scripting

return in function

I am using ksh. I want to know how can we make any function to return string or double value. I dont want to use the global variables. (5 Replies)
Discussion started by: PRKS
5 Replies

7. Shell Programming and Scripting

return value of a function

I have write a shell function to get the maximum of a vector. However, the returned value from the function is not always the correct one. Here is the script: maxval() { local max j i size arrval size=$1 ; shift max=-999999999 i=0 while do arrval="$1" if then ... (5 Replies)
Discussion started by: fl0r10
5 Replies

8. Shell Programming and Scripting

need to return value from function

how to return value from function and print from main program??? And also I need to return true or false... Is it possible? (5 Replies)
Discussion started by: darshakraut
5 Replies

9. Shell Programming and Scripting

return value of a function

Hi I have a doubt in the way the variables inside a function are treated . if a function is called from the main script directly, the variables inside them act as global variables. however if the return value of the function is stored to some other variable in the main script as shown,... (3 Replies)
Discussion started by: prez
3 Replies
Login or Register to Ask a Question