创建数组时出现awk语法错误

时间:2013-12-08 21:56:34

标签: awk

我只是想开始编写一个awk脚本来测试是否包含在数组中,但是我似乎在某个地方有一个基本的语法错误。

#!/bin/bash


awk \
BEGIN {'myarray["foo"] = "bar" '} \
{' \
  print "$1" \
'} $1

如果我取出BEGIN行,那么该剧本的其余部分确实有效。

我也尝试过这样:

#!/bin/bash
awk \
{' \
  myarray["foo"] = "bar" \
  print "$1" \
'} $1

这是我得到的错误。

awk: syntax error at source line 1
 context is
     >>>  <<<
awk: bailing out at source line 1

1 个答案:

答案 0 :(得分:4)

尝试这样的事情:

#!/bin/bash

awk -v param="$1" '
BEGIN { myarray["foo"] = "bar"}
{
  print myarray["foo"]
  print param
}' $1

-v是将变量传递给awks-domain的正确方法:

-v var=val
       --assign var=val
              Assign  the  value  val to the variable var, before execution of
              the program begins.  Such variable values are available  to  the
              BEGIN block of an AWK program.

示例:

$ echo 1 > one_line_file

$ ./t.sh one_line_file 
bar
one_line_file