鉴于此脚本
#!/bin/awk -f
{
print $1
}
可以这样称呼
foo.awk foo.txt
但是我希望脚本总是调用foo.txt
. 所以我想修改脚本,这样就可以在没有输入文件的情况下调用它,就像这样
foo.awk
鉴于此脚本
#!/bin/awk -f
{
print $1
}
可以这样称呼
foo.awk foo.txt
但是我希望脚本总是调用foo.txt
. 所以我想修改脚本,这样就可以在没有输入文件的情况下调用它,就像这样
foo.awk
#!/bin/awk -f
BEGIN {ARGV[ARGC++] = "foo.txt"}
{print $1}
这将添加foo.txt
到参数列表的末尾,就像您将它放在命令行中一样。这还有一个额外的好处,就是允许您扩展您的脚本来做更多的事情,而不仅仅是打印,而不必将所有内容都放在BEGIN
块中。
好吧,也许做这个把戏?(欺骗?)
#!/bin/sh
awk '{print $1}' foo.txt
你可以把它命名为foo.awk
接着
chmod +x foo.awk
现在尝试./foo.awk
在同一目录下。
编辑
#!/bin/awk -f
BEGIN{while(getline < "/path/to/foo.txt")print $1 }
奇怪的要求。为什么 bash 包装器不符合您的要求?无论如何,您确实标记了问题shell
,上面的脚本应该是您需要的。
我会为此使用外壳包装器:
#!/bin/bash
foo.awk foo.txt