我有一个add.awk
包含函数的 awk 文件add(num1,num2)
。我想从命令行获取输入。
#!/bin/awk -f
function add(num1,num2)
{
print $num1 + $num2
}
BEGIN {
add($1,$2)
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用以下命令执行文件 add.awk 时:
./add.awk 5,6
Run Code Online (Sandbox Code Playgroud)
它总是打印值 0。
我指定输入的方式有问题吗?
有几个问题,我觉得
首先,据我知道的命令行参数不作为$1
和$2
内部BEGIN
块。但是,至少在 GNU awk 中,您可以通过ARGV
数组访问它们(尽管它们需要以空格分隔而不是逗号分隔)。
其次,取消引用内部变量的语法就是num1
not $num1
。
所以你可以这样做
#!/usr/bin/awk -f
function add(num1,num2)
{
print num1 + num2
}
BEGIN {
add(ARGV[1],ARGV[2])
}
Run Code Online (Sandbox Code Playgroud)
然后将其称为
$ ./add.awk 5 6
11
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用,./add.awk 5,6
那么你需要在ARGV[1]
内部拆分成一个数组,例如
#!/usr/bin/awk -f
function add(num1,num2)
{
print num1 + num2
}
BEGIN {
split(ARGV[1],a,",");
add(a[1],a[2])
}
$ ./add.awk 5,6
11
Run Code Online (Sandbox Code Playgroud)