我制作了这个awk代码以打印2个姓名
#! /usr/bin/awk -f
BEGIN {
for (i=0; i < ARGC; i++)
print ARGV[i]
} inventory-shipped BBS-list
我希望结果是
awk
inventory-shipped
BBS-list
但是当我运行它时,脚本仍然希望我在上面写一些东西来打印,即使我希望已经在此打印的列表也是如此。但是当我从终端这样写的时候
$ awk 'BEGIN {
for (i=0; i <ARGC; i++)
print ARGV[i]
}' inventory-shipped BBS-list
我可以打印预期的结果。
答案 0 :(得分:1)
您不能在脚本中放入命令行参数。您应该将其运行为
./scriptname inventory-shipped BBS-list
答案 1 :(得分:1)
不要使用shebang从shell脚本执行awk,只需调用它即可:
#!/bin/env bash
awk '
BEGIN {
for (i=0; i < ARGC; i++)
print ARGV[i]
}
' inventory-shipped BBS-list
相对于如何将Shell脚本参数分为awk变量和awk文件名或执行其他任何您喜欢的操作,这将给您更大的灵活性。
答案 2 :(得分:1)
您可能想尝试一下
#!/usr/bin/awk -f
BEGIN {
for (i=0; i < ARGC; i++)
print ARGV[i]
}
chmod a+x script.awk
./script.awk inventory-shipped BBS-list
awk
inventory-shipped
BBS-list