我有:
1 #!/bin/ksh
2 BEGIN { print "START" }
3 { print "Hello World" }
4 END { print "STOP" }
5
6
7 exit 0
然后当我尝试运行该文件时出现以下错误:
./file[2]: BEGIN: not found
./file[3]: syntax error: `{' unmatched
命令awk
需要在关键字前面吗BEGIN
?
答案1
当我解释你的问题时,你正在尝试awk
运行一个简单的脚本,然后你将ksh
围绕它详细说明一个脚本。为此,您需要像这样修改脚本:
1 #!/bin/ksh
2 awk 'BEGIN { print "START" } \
3 { print "Hello World" } \
4 END { print "STOP" }'
5
6
7 exit 0
您的脚本将awk
使用一个大字符串作为awk
脚本执行(从 $PATH)。大字符串用单引号引起来,以防止ksh
进行字符串插值,并且反斜杠作为第 2、3、4 行的最后一个字符存在,以使其成为一个大字符串,而不是 3 个较小的字符串。
打印“START”后脚本ksh
将显示为挂起。只需按几次“返回”或“输入”即可。每次“输入”时您都会看到“Hello World”。执行 control-D 以指示文件结束awk
。该awk
进程将打印“STOP”并退出。
要执行其他操作,您需要编写更多内容ksh
- 提供awk
输入文件,将其发送到文件或管道中,等等。