function parameter issue


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers function parameter issue
# 1  
Old 02-02-2011
function parameter issue

hi,
i have a function say "mask". i'm passing parameters to the function like file_name \$1 |.
inside the function i'm naming the second parameter as position (i.e value of position will be "$1").
i'm passing the position's value like " $position=a[$position]"
But it is nor picking the value "$1". Instead, while executing it just goes as $position itself.
Please help.
# 2  
Old 02-02-2011
Please tell us what shell/language you are using. Also please show an excerpt of your code since there are things unclear from your description (at least for me), thanks.
When doing so, use [code] and [/code] tags to enhance readability and preserve formatting, thanks.
# 3  
Old 02-02-2011
i'm using ksh.

the below is my code. i'm not able to retrieve the "position" value.

Code:
function mask
{
   set -x
   file_name=$1
   position=$2
   separator=$3
 
   if [ -e $file_name ];then
      awk '
         BEGIN {FS="[,\|]"}
         FNR==NR{a[$1]=$2;next}
         {if ($position in a) {$position=a[$position];print}
            else print}
      ' OFS="$separator" $DIR_FEEDBASE/GEID_lookup.txt $file_name > $file_name_tmp.dat
      mv $file_name_tmp.dat $file_name
   fi
}

The parameters which will be passed to the function will be like " mask <file_name> \$1 |


Moderator's Comments:
Mod Comment I asked you kindly to use code tags - instead you just formatted it with fonts. It is awful to remove all those font formattings to be able to add indention that you also did not use. You get a reminder for this and a PM with an instruction how and when to use code tags.

Last edited by zaxxon; 02-02-2011 at 10:08 AM.. Reason: code tags again
# 4  
Old 02-02-2011
  • Not escaping the | when handing it over as parameter of your function will not work, as it is a special symbol in the shell to pipe output from stdout to stdin of the next command. You should try escaping it or putting double quotes around it. You did escape the $ of $1 so why not do the same with the pipe?! Smilie
  • $position is a variable not known/defined in awk. You might want to use something like awk -v position=$position ... to pass it to awk.

After correcting those, try again and let's see if it get's stuck again.
# 5  
Old 02-03-2011
hi zaxxon,
no luck.even now it is not picking the value.
# 6  
Old 02-03-2011
Without having the input files available and the actual code of your function, it is not easy to recreate your problem.
Did you just try to print out the values inside awk? You should try to check out, at which point the values are not the ones you expect.

Last edited by zaxxon; 02-03-2011 at 10:21 AM.. Reason: typo
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to pass function parameter to do loop?

Hi All, I have created one function for KSH and was running well with one parameter input since I just had to use $1 to get the parameter. Now I want to do loop for each parameter(actually filenames) . I have try to use do loop, but $i does not resolve to parameter instead it resolves to 1,... (5 Replies)
Discussion started by: mysocks
5 Replies

2. Shell Programming and Scripting

Passing command as a function parameter

Hi All, Just trying to implement the below shell script using AIX ksh shell. myfunc { eval "$*" } CMD='ls -la /etc/hosts | awk '{print $9"|"$5}'' myfunc $CMD Keeping getting "|}: not found" errors, any pointers would greatly be appreciated. Kind Regards Ed Please... (2 Replies)
Discussion started by: eo29
2 Replies

3. Shell Programming and Scripting

Pass command as a function parameter

Hi guys, can someome help with this question, I have defined a function that takes a command as a parameter, but when the command is executed from the function it will throw errors because what I believe is a special character escaping issue. I tried using the backslash to escape the pipe | and >... (2 Replies)
Discussion started by: marouanix
2 Replies

4. Solaris

function parameter in unix

Hi, How to use a function with passing value as a parameter in unix ? With Regards (7 Replies)
Discussion started by: milink
7 Replies

5. Shell Programming and Scripting

How to use parameter with perl function?

am a beginer of shell Unix, plesase tell me how to get parameter with $perl in loop $ perl -lne '$/="DOCEND";print $_."DOCEND" if /$ACC/' file_input > output i can't get parameter in loop with perl fucntion like this pass paramerter to $ACC not accept in this script $ACC = paramerter to... (4 Replies)
Discussion started by: krai
4 Replies

6. Shell Programming and Scripting

pass parameter to function

HI all I have a code like ############################################## minyear() { curryear=$1 echo $curryear } ##Main Program ## minyear exit ####### when i execute "sh scriptname 2005" output should be like 2005 but the output is blank. I guess i need to pass parameter to... (3 Replies)
Discussion started by: vasuarjula
3 Replies

7. Shell Programming and Scripting

KSH list as function parameter

Hello, Could anyone help me with some KSH syntax? I'm trying to pass a list as a function parameter in a KSH? For example I have code like this: print_counter() { N=$1 C=$2 for A in $C; do echo "This is $N number $A" done } NAME=BRICK COUNT=" 1 2 3 4" ... (2 Replies)
Discussion started by: pn8830
2 Replies

8. Shell Programming and Scripting

function parameter

Hi, i have this code : awk -v s=string_to_find 'BEGIN{ n="" } { if ($0 ~ /FEATURE TESTED /) { n=$0 } if (index($0,s)!=0) { if (n!="") print n n=="" } }' $file1 > $file2 (4 Replies)
Discussion started by: kamel.seg
4 Replies

9. UNIX for Advanced & Expert Users

Parameter passing in a function

I need to pass a parameter to a function in a script. My parameter is a string. When I display the parameter within my function, I only get the first word from string I pass in. How can I make the function receive the whole string (and not terminate at the first space it encounters)?. part of... (2 Replies)
Discussion started by: fastgoon
2 Replies

10. Shell Programming and Scripting

Passing a string parameter to a function

I need to pass a parameter to a function in a script. My parameter is a string. When I display the parameter within my function, I only get the first word from string I pass in. How can I make the function receive the whole string (and not terminate at the first space it encounters)?. part of... (1 Reply)
Discussion started by: fastgoon
1 Replies
Login or Register to Ask a Question