zhao_yi707
我想问一下,#!后面能执行啥样的程序。
我有三个程序:
echoarg.c
[table=95%][tr][td][font=FixedSys][color=#000000][color=#0000FF]int[/color]
main[color=#0000CC]([/color][color=#0000FF]int[/color] argc[color=#0000CC],[/color] [color=#0000FF]char[/color][color=#0000CC]*[/color] argv[color=#0000CC][[/color][color=#0000CC]][/color][color=#0000CC])[/color] [color=#0000CC]{[/color]
[color=#0000FF]int[/color] i[color=#0000CC];[/color]
[color=#0000FF]for[/color] [color=#0000CC]([/color]i [color=#0000CC]=[/color] 0[color=#0000CC];[/color] i [color=#0000CC]<[/color] argc[color=#0000CC];[/color] i[color=#0000CC]+[/color][color=#0000CC]+[/color][color=#0000CC])[/color] [color=#0000CC]{[/color]
[color=#FF0000]printf[/color][color=#0000CC]([/color][color=#FF00FF]"argv[%d]: %s/n"[/color][color=#0000CC],[/color] i[color=#0000CC],[/color] argv[color=#0000CC][[/color]i[color=#0000CC]][/color][color=#0000CC])[/color][color=#0000CC];[/color]
[color=#0000CC]}[/color]
[color=#FF0000]exit[/color][color=#0000CC]([/color]0[color=#0000CC])[/color][color=#0000CC];[/color]
[color=#0000CC]}[/color]
[/color][/font][/td][/tr][/table]
echoarg.pl
[table=95%][tr][td][font=FixedSys][color=#000000][color=#FF9900]#!/usr/bin/perl
[/color]
[color=#FF9900]#
[/color]
[color=#0000FF]my[/color] [color=#0000FF]$[/color][color=#008080]t[/color] [color=#0000CC]=[/color] [color=#0000FF]$[/color][color=#FF9900]#ARGV;
[/color]
[color=#0000FF]foreach[/color] [color=#0000FF]my[/color] [color=#0000FF]$[/color][color=#008080]i[/color] [color=#0000CC]([/color]0[color=#0000CC].[/color][color=#0000CC].[/color][color=#0000FF]$[/color][color=#008080]t[/color][color=#0000CC])[/color] [color=#0000CC]{[/color]
[color=#FF0000]print[/color] [color=#FF00FF]"argv[$i]: "[/color] [color=#0000CC].[/color] [color=#0000FF]$[/color][color=#008080]ARGV[/color][color=#0000CC][[/color][color=#0000FF]$[/color][color=#008080]i[/color][color=#0000CC]][/color] [color=#0000CC].[/color] [color=#FF00FF]"/n"[/color][color=#0000CC];[/color]
[color=#0000CC]}[/color][/color][/font][/td][/tr][/table]
最后一个程序是:testinterp,这个程序只有如下一行
[quote]#!/tmp/echoarg foo
[/quote]
我的问题是,如果这个#!/tmp/echoarg 为前面的c程序编译后的文件即可以执行,如果#!/tmp/echoarg为这个pl程序即没有反应?
为什么呢?不解。
谢谢大家。
liubingqian
脚本语言是需要由解释器解释执行的(你编译过C程序,但编译Perl程序吗?)#!后面的内容就是告诉操作系统到什么地方去找解释器。
[quote]原帖由 [i]zhao_yi707[/i] 于 2008-6-30 11:30 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8701469&ptid=1184381][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
你的意思是,如果#!放在脚本程序里面和解释性文件里面是不一样的? [/quote]
是的,#!开头的行有特殊的含义,不是普通的注释。
[[i] 本帖最后由 liubingqian 于 2008-6-30 11:51 编辑 [/i]]