2017-04-05 120 views
0

我想写一个简单的awk脚本,不使用任何文件输入参数或任何东西。我只测试了它写一个Hello World程序至今:简单的awk脚本,不需要参数或输入文件

#!/usr/bin/awk 
BEGIN{} 
{print "hello"} 
END{} 

我得到一个错误awk: 1: unexpected character '.'当我尝试通过终端来运行它使用:./program.awk 这究竟是为什么? 谢谢

回答

2

添加-f结束家当行这样告诉awk脚本如下:

#!/usr/bin/awk -f 

此外,由于你没有输入,把printBEGIN块:

BEGIN {print "Hi"} 
+0

所以如果我正确理解你-f标志告诉awk运行'./ program.awk'脚本和'BEGIN {}'块被用来做不需要输入文件的东西?所以主块'{...}'使用输入文件来操作? – Luki

+1

差不多 - 当你运行'./ program.awk'时,会创建一个新进程,并在该进程中执行'awk','-f'告诉'awk'脚本跟在这个文件中。在读取任何输入之前,'BEGIN {}'中的内容都会被执行,这对于没有任何输入数据的用例来说是理想的。随后的'{...}'中的东西会为每个后续的输入行执行,但是你没有输入,所以它可能会等待。 –

+0

即使我不在脚本中创建主块,是否还有'END {...}'块也会挂起以防万一我没有输入文件? – Luki