Problem using function in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem using function in awk
# 15  
Old 09-05-2010
Wrench

So one never passes the local variables to the function. Is that correct, we pass only the arguments we want to be passed.

---------- Post updated at 04:44 PM ---------- Previous update was at 04:40 PM ----------

That was a superb example agama. You said it all.
# 16  
Old 09-05-2010
Quote:
Originally Posted by kristinu
So one never passes the local variables to the function. Is that correct, we pass only the arguments we want to be passed.
There is nothing that would stop a function from being called and where the 'local' variables are also passed, but it is likely that they will be ignored by the function. The demo() function could have been invoked with (a,b,1,2) but that would not have changed the result as the function did not expect the variables c and d to contain useful information and assigned values before using them in the printf().

Glad the example helped.
# 17  
Old 09-05-2010
How does the function know c and d are local? From what I understand now, all variables passed to the function are local, even 'a' and 'b'. Depends whether we use 'a' and 'b' for some calculation. Does one actually need to put a tab to recognize whether variables are local or not?
# 18  
Old 09-05-2010
Quote:
Originally Posted by kristinu
How does the function know c and d are local? From what I understand now, all variables passed to the function are local, even 'a' and 'b'. Depends whether we use 'a' and 'b' for some calculation. Does one actually need to put a tab to recognize whether variables are local or not?
You are correct, all variables that appear in the function declaration are local. The tab, or extra white space, is only to help humans who come along and maintain your programme. It's an easy signal that everything to the right of the extra space is just a local variable and that the function is not expecting to have those values passed in.

I've been using awk for the last 15 years or so, and I still get tripped up now and again because I forget to put a local variable in the header. Not one of awk's easier concepts to explain or understand; you've done well with it.
# 19  
Old 09-05-2010
Bug

Thanks. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need help on awk for printing the function name inside each function

Hi, I am having script which contains many functions. Need to print each function name at the starting of the function. Like below, functionname() { echo "functionname" commands.... } I've tried like below, func=`grep "()" scriptname | cut -d "(" -f1` for i in $func do nawk -v... (4 Replies)
Discussion started by: Sumanthsv
4 Replies

2. Shell Programming and Scripting

Function problem

hey guys, im trying to learn bourne shell atm and I'm having some issues with functions. so heres my code: #!/bin/bash ##functions memory () { free -m } space () { df -h } ip () { (5 Replies)
Discussion started by: hawkfro12
5 Replies

3. UNIX for Dummies Questions & Answers

Explanation on problem "match" function awk

Hello Unix experts, If I could get any explanations on why the code below doesn't work it would be great ! My input looks like that ("|" delimited): Saaaaabbbbbccccc|ok Sdddddfffffggggg|ok The goal is, if $2 is "ok", to remove everything before the pattern given in the match function... (5 Replies)
Discussion started by: lucasvs
5 Replies

4. Shell Programming and Scripting

AWK Problem in recursive function

Hi, I have a file like this SPF_HC00001|iCalcular_Monto_Minimo|--->|SPF_HC00028|pstcObtener_Monto_Minimo SPF_HC00004|iCalcular_Incrementos|--->|SPF_HC00032|pstcObtener_Num_Incrementos SPF_HC00005|iCalcular_Articulo_167_Reformado|--->|SPF_HC00031|pstcObtener_Por_CB_Inc... (2 Replies)
Discussion started by: kcoder24
2 Replies

5. UNIX for Advanced & Expert Users

AWK sub function curious problem under bash

I need to detect the number of pages in a print job when it is available so I can warn users when they try to print a report much larger than they expected. Sometimes they are trying to print 1000 page reports when they thought they were getting a 10 page report. Under linux I am scanning the... (5 Replies)
Discussion started by: Max Rebo
5 Replies

6. Shell Programming and Scripting

splice function problem

Hi All, I am using splice function in for loop to delete particular element from array with one condition. my $cnt=0; foreach my $elem (@result) { if (condition){ splice(@result, $cnt, 1);} else{ $cnt++;} } Now when in array, two elements comes sequentially with the... (3 Replies)
Discussion started by: gentleDean
3 Replies

7. Shell Programming and Scripting

Awk problem: How to express the single quote(') by using awk print function

Actually I got a list of file end with *.txt I want to use the same command apply to all the *.txt Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics. For example: I got the file below: file1.txt file2.txt file3.txt... (4 Replies)
Discussion started by: patrick87
4 Replies

8. Shell Programming and Scripting

awk , function call problem

#!/bin/bash awk ' function ad(t,r){ return (t+r); } BEGIN{ print ad(5,3); } { print ad(5,3); } ' Doesn't print anything for the last print ad(5,3); (6 Replies)
Discussion started by: cola
6 Replies

9. Shell Programming and Scripting

problem in awk int() function

awk -vwgt=$vWeight -vfac=$vFactor ' BEGIN { printf("wgt:" wgt "\n"); printf("factor:" fac "\n"); total = sprintf("%.0f", wgt * fac); total2 = sprintf("%.0f", int(wgt * fac)); printf("total:" total "\n"); printf("total2:" total2 "\n"); } ' if vWeight=326.4 vFactor=100 the result... (2 Replies)
Discussion started by: qa.bingo
2 Replies

10. Programming

Problem with aio_write() function

Hello, How to execute a call back function after aio_write() or aio_read() in Sun Solaris 5.7? I have filled the control block struct aiocb as follows: aio_sigevent.sigev_signo = SIGEV aio_sigevent.sigev_notify = SIGEV_THREAD Then I have filled the call back function in ... (0 Replies)
Discussion started by: hmurali
0 Replies
Login or Register to Ask a Question