我只是想开始编写一个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
答案 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