【发布时间】:2018-05-04 12:56:39
【问题描述】:
我在阅读 UNIX 中的高级编程时偶然发现了这个示例。 shebang线在这里做什么?这是代码的顶部。
#!/usr/bin/awk -f
BEGIN {
printf("#include \"apue.h\"\n")
printf("#include <errno.h>\n")
printf("\n")
printf("static void pr_sysconf(char *, int);\n")
printf("static void pr_pathconf(char *, char *, int);\n")
printf("\n")
printf("int\n")
printf("main(int argc, char *argv[])\n")
printf("{\n")
printf("\tif (argc != 2)\n")
printf("\t\terr_quit(\"usage: a.out <dirname>\");\n\n")
FS="\t+"
while (getline <"sysopt.sym" > 0) {
printf("#ifdef %s\n", $1)
printf("\tprintf(\"%s is defined (val is %%ld)\\n\", (long)%s+0);\n", $1, $1)
printf("#else\n")
printf("\tprintf(\"%s is undefined\\n\");\n", $1)
printf("#endif\n")
printf("#ifdef %s\n", $2)
【问题讨论】:
-
为什么这个标签是 [c]?看起来它发出了一些 c 代码,但在其他方面不相关。
-
这意味着这个文件是一个可执行命令,由程序
/usr/bin/awk执行(解释)。 (这就是#!行的含义。)