2012-01-02 2 views
0

말에서 인쇄 인수 이름 :유닉스 - AWK - bash는 스크립트 내부의 아래 AWK와 사용자 정의 함수

가 어떻게 전달 된 인수의 이름을 인쇄 할 print_line 기능을 얻을 수 있나요? 이 출력

array passed in was: 
arrayprime 
array passed in was: 
arraymagic 

코드 (전체없는 것)의 요지의 스 니펫 즉 는 :

awk -F"$delim" ' 
NR>1 { 

     print_line(arrayprime) 
     print_line(arraymagic) 
} 
    func print_line(arr) 
    { 
     print "array passed in was:" 
      print arr 
    } 

} ' "$filename" 

답변

5

아니, awk이 내성적이 될 수있는 능력을 가지고 있지 않습니다.

C 언어는 C 전 처리기를 사용하여이를 수행 할 수 있습니다. 이러한 유형의 동작을 awk 함수로 롤백하려면 C 프리 프로세서를 사용하거나 쓸 수 있습니다. GNU M4 macro

매개 변수를 하나만 더 추가하려면 할 수 있습니다.

awk -F"$delim" ' 
NR>1 { 

     print_line(arrayprime, "arrayprime") 
     print_line(arraymagic, "arraymagic") 
} 
    func print_line(arr, name) 
    { 
     print "array passed in was:" 
      print name 
    } 

}' "$filename" 
+0

대부분의 언어처럼 사용 http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_value하지 http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_name을 부탁드립니다. –